Perplexity Comet で Lambda 関数の S3 アクセスエラーを解決してみた

Perplexity Comet で Lambda 関数の S3 アクセスエラーを解決してみた

2025.10.02

はじめに

お疲れ様です。あきとです。
最近涼しくなってきてエアコンもいらないなと思ったのに、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 バケットのファイル一覧を取得できるようにエラーの原因を特定し、修正してください」と指示しました。

Lambda 関数実行画面

Comet は自動的に画面を操作し、環境変数、コード、CloudWatch ログを順番に確認していきます。

CloudWatch ログストリーム一覧
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 編集画面
IAM ポリシー JSON 編集画面 - s3:ListBucket と s3:GetObject 権限を追加

IAM ロール許可ポリシー一覧
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サイトをご覧ください。

この記事をシェアする

FacebookHatena blogX

関連記事

Perplexity Comet で Lambda 関数の S3 アクセスエラーを解決してみた | DevelopersIO