
Perplexity Comet で Lambda 関数の S3 アクセスエラーを解決してみた
はじめに
お疲れ様です。あきとです。
最近涼しくなってきてエアコンもいらないなと思ったのに、PC をつけると部屋が暑くなって、結局エアコン使っちゃう今日この頃...
今回は、Perplexity の AI ブラウザ Comet (Comet Browser: a Personal AI Assistant) を利用して、Lambda 関数が S3 バケットのファイル一覧を取得する際に発生したエラーの原因を特定し、修正してみた内容を共有したいと思います。
背景・動機
個人的に Comet という AI ブラウザを試験的に利用していたのですが、ふと「AWS マネジメントコンソールからの操作にも使えるのではないか」と思い、まずは簡単な内容から試してみることにしました。
前提条件
今回の検証では、意図的にエラーが発生する環境を構築しました。具体的には以下の条件で Lambda 関数を作成しました。
- S3 バケット内に「index.html」ファイルのみを配置
- Lambda 関数には IAM 権限を一切設定しない
- Lambda 関数の目的:S3 バケット内のファイル一覧を取得
やってみた
Comet によるエラー原因の特定
Lambda 関数を実行した画面で、Comet のアシスタントに「s3 バケットのファイル一覧を取得できるようにエラーの原因を特定し、修正してください」と指示しました。
Comet は自動的に画面を操作し、環境変数、コード、CloudWatch ログを順番に確認していきます。
CloudWatch ログストリーム一覧 - 複数のログストリームから情報を収集
CloudWatch ログイベント画面 - ログを確認するも明確なエラーメッセージが見当たらない状況
Comet は調査の結果、以下の原因を特定してくれました。
s3 バケットのファイル一覧取得でエラーとなる原因と修正方法は、以下の通りです。
**現状確認**
- Lambda 関数の環境変数「BUCKET_NAME」は「comet-html-test」と正しく設定されています。
- Python 3.13 環境で `import boto3` と `os.environ.get("BUCKET_NAME")` の取得まではコード上問題ありません。
- **CloudWatch ログを見る限り、Lambda 実行結果には明確なエラーメッセージが表示されていません。**エラーが出ていない場合、多くは権限不足・IAM ポリシー未設定による S3 アクセス拒否が予想されます。
- Lambda の実行ロール「comet-html-test-role-o8ghq9br」には「AWSLambdaBasicExecutionRole」しか適用されておらず、**S3 バケットへのアクセス権限(s3:ListBucket や s3:GetObject)が不足しています**。
明確なエラーメッセージがない状況でも、Comet は環境変数、コード、IAM ロールを確認することで、権限不足がエラーの原因であることを正確に分析できました。
IAM 権限の追加
Comet から以下の修正方法が提示されました。
IAM ロールの権限追加
Lambda 実行ロールに、対象 S3 バケットの一覧取得・ファイル取得権限を付与する必要があります。
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::comet-html-test",
"arn:aws:s3:::comet-html-test/*"
]
}
なお、最初の回答は解決策の提示にとどまっていたため、追加で「必要な修正を実際に操作してください」と依頼しました。
IAM ポリシー JSON 編集画面 - s3:ListBucket と s3:GetObject 権限を追加
IAM ロール許可ポリシー一覧 - インラインポリシー「S3CometHtmlTestBucketAccess」が追加された状態
Comet は「IAM > ロール > comet-html-test-role-o8ghq9br > ポリシーの追加」と操作を進め、インラインポリシー「S3CometHtmlTestBucketAccess」を作成し、Lambda 実行ロールにアタッチしてくれました。
動作確認
IAM ポリシーの追加後、Lambda 関数を再実行してテストを行いました。その結果、Lambda 関数から S3 バケットのファイル一覧を正常に取得できるようになりました。
まとめ
今回は、Perplexity の Comet を利用して、Lambda 関数の S3 アクセスエラーを解決しました。
Comet は以下の点で非常に有用でした。
- エラーメッセージが不明確な状況でも、環境変数、コード、IAM ロールを自動的に確認して原因を特定
- 必要な修正内容(IAM ポリシー)を具体的に提示
- AWS マネジメントコンソールを実際に操作して修正を実施
AI ブラウザによる自動化により、エラー調査から修正までの一連の流れを AWS マネジメントコンソール上でスムーズに進めることができました。今後、より実用的な構築作業でも Comet を試してみようと思います。
本ブログが誰かの参考になれば幸いです。
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。