php_modが非推奨になったのね

昔のバージョンのphp環境でphpバージョンを上げるという対応中。 apache + PHP8のインスタンスを構築してドキュメントルートまで到達を確認。 対応する人にドキュメントルートまで到達するからプロジェクトのファイルを置いてバージョンアップのエラーを確認してもらうため依頼しましたが HTTP 503 Service Unavailable のエラーが出ているとのこと。 HTMLファイルはアクセスできているからPHPの実行ができていないと思い調べると Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨になりました。 php-fpmをインストールして起動し、リクエストを流してphp-fmpでphpを実行するようにして解決。 しばらくPHPを触っていなかったのでモジュールが非推奨になったことに気づかずでした。

AWS SDK S3 オブジェクトにタグをつけようとして躓いたメモ

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

権限がないときに出るエラーですがPutObject許可しているしなー
って思っていたらもしかして・・・

PutObjectTagging

この権限を付与したらできました。

IAMの権限ってPutObjectアクションを許可したらそのアクションのオプションが使えるのかと思っていたら違うんですね。
PutObjectTaggingは既存のオブジェクトにタグを付けるのに使うので違うだろと思っていたらPutObjectのタグを付けるときにもPutObjectTaggingを許可しないとできないみたい。。。

あー英語のマニュアル読めるようになりたいです。。。

以上です。

コメント

このブログの人気の投稿

nginxで画像が表示されない。。

AWSのS3バケットをマウントするs3fsでマウントが外れた件

CakePHP3でHTTPSにする