質問
S3コネクターの「ファイル/フォルダ書き込み処理」について、確認させて下さい。
「ファイル/フォルダ書き込み処理」の処理の結果を取得し、出力データに「status="Error"」が出力されていましたが、S3を確認したところ正常にファイルが書き込みされています。
「status="Error"」でファイル/フォルダ書き込み処理の成否判定をしたいのですが、本事象を回避する方法はありますでしょうか。
なお、実行ログを確認したところwarnレベルのログに以下のようなメッセージが出力されていました。
com.amazonaws.services.s3.model.AmazonS3Exception: User: {IAMユーザー} is not authorized to perform
s3:PutObjectAcl on resource: "{ファイルパス}" because public access control lists (ACLs) are blocked by the BlockPublicAcls block public access setting.
.Service: Amazon S3; Status Code: 403; Error Code: AccessDenied
回答
本事象の原因はS3への接続に利用しているIAMユーザーにて「PutObjectAcl」アクションの実行権限を持っておらず、
アクセスコントロールリストへの書き込み処理に失敗したため、実行結果が正常に取得出来ずに出力データが「status="Error"」となったと考えられます。
また、実際にS3への書き込み処理が正常に完了している動作につきましては、
エラーとなったのはアクセスコントロールリストへの書き込み処理のみで、ファイルの書き込み処理である「PutObject」アクション自体は正常に完了しているためです。
warnログに出力されているメッセージはAmazon S3における「PutObjectAcl」アクションの実行権限を持っていない場合に出力されるメッセージとなります。
また、S3コネクターのファイル/フォルダ書き込み処理にて必要なIAM権限につきましては、
以下のような仕様となっています。
| アクション名 | 備考 |
|---|---|
| s3:PutObject | |
| s3:GetObjectAcl |
|
| s3:PutObjectAcl |
|
| s3:CreateBucket |
|
| s3:ListBucket |
|
| s3:ListAllMyBuckets |
S3コネクターにおけるプロパティ設定の[アクセス権]で「公開」を選択している場合、アクセスコントロールリストへの書き込み処理がS3コネクターの「ファイル/フォルダ書き込み処理」にて実行されます。
回避策としましては、IAMユーザーにPutObjectAclアクションのIAM権限を付与していただくか、
S3コネクターのプロパティ設定における[アクセス権]にて「公開」のチェックを外してしていただく事で、出力データの[status]要素の値と実際の実行結果の差異が解消されます。
コメント
0件のコメント
記事コメントは受け付けていません。