S3 オブジェクトにタグをつけようとして躓いたメモ 表題の通りで putObject するときにTaggingというオプションがあったので使ってみたら新規オブジェクト登録時にそのまま使えなかったのでメモに残すことにしました。 結論的にはかんたんなことでしたIAMの権限の不足でした。 私はSDK用のユーザーをアプリケーションごとに作成して各アプリケーションごとにバケットを作成します。ユーザーはアプリケーションのバケットに対して最小限の必要な権限を付与していくのですが、今回はファイルをS3にアップロードして必要時にダウンロード(両方WEBアプリケーションから)するために対象WEBアプリケーション用にユーザーを作成しています。 付与した権限は GetObject PutObject DeleteObject これを許可していました。 これで運用していたのですがスマートフォンから送信してきたファイルと、同じ機能でWEBアプリケーションからデータをファイルにしたときのファイルが同一にできなくて。。 バケットやプレフィックスも分けるわけには行かなかったので悩んでいると PutObjectにTaggingというオプションがあったので おっ!これだ なので諦めてタグでアプリケーションからわかるようにしようと思い早速試してみる 送り方は $option + ['Bucket' => $bucket, 'Key' => $prefix_and_objectname, 'ContentType' => $content_type, 'Body' => $resorce, 'Tagging' => $tags]; $response = $awsS3client->putObject($option); ちなみに SDK for PHP $tagの部分はURLに含めるクエリストリング key1=value1&key2=value2 こんな感じ よしこれでいいと送信してみましたがエラー エラーの内容は AccessDenied ...