質問: AWS CLI経由で、S3上に配置した画像をAmazon Rekognitionに投げ、文字認識(DetectText)をしたいと思っていますが、エラーでうまくいきません。 ``` aws rekognition detect-text --image "S3Object={Bucket=mybucket,Name=text.jpg}" --region ap-northeast-1 ``` 上記のコマンドをコマンドプロンプトまたはpowershell(管理者権限付き)で入力すると、下記のようなエラーが返ってきてしまいます。 > > An error occurred (InvalidS3ObjectException) when calling the DetectText operation: Unable to get object metadata from S3. Check object key, region and/or access permissions. > > > エラーから見るに、IAMかS3のバケットポリシーあたりが原因ではないかと思っているのですが...どこがおかしいのか(何が足りないのか)が把握できていません。 原因、他に設定すべき箇所の指摘や解消方法などご教示いただけないでしょうか。 環境: ・OS:Windows10(proxy環境下です。cntlmにてローカルプロキシを立てて動かしています) ・リージョン:ap-northeast-1(CLI設定、S3ともに東京リージョンなのを確認済み) ・AWS CLI:アクセスキー、シークレットアクセスキー、リージョン、アウトプット設定済み ・IAM:ユーザのアクセス権限に下記がついています - AmazonS3FullAccess - AmazonRekognitionFullAccess ・S3:バケットポリシーは下記通りです(Statementのみ抜粋)。 ``` "Statement": [ { "Sid": "XXXXXXXXXXXXXXXX", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::mybucket", "arn:aws:s3:::mybucket/*" ], ``` 備考: ・操作対象のS3には、Lambda経由ではアクセスでき、Rekognitionで画像認識ができています。また、CLI経由でS3内の操作ができることを確認済みです。 ・S3を利用しないrekognitionのコマンド(下記通り)はエラーなく動きます。 ``` 例:aws rekognition create-collection --collection-id testcollection ``` お力添えいただければ幸いです。
回答: アクセス権が正しいとしても、s3オブジェクトが存在しない場合でも同じエラーメッセージになります。 例えば、 aws s3 cp s3://mybuket/test.jpg . として正しくダウンロードできるか試してみてはどうでしょうか?