ヤマムギ

growing hard days.

*

ブログの画像を別アカウントのS3に移動するためにIAMロールでクロスアカウントアクセス

   


ずっと先延ばしにしていたのですが、このブログの画像はEC2から直接配信しています。
いい加減にS3からの配信に切り替えようと、画像データだけの引っ越しを予定しております。

諸事情ありまして、S3バケットのアカウントとEC2のアカウントは別のアカウントです。
なので、クロスアカウントでファイルをアップロードします。
いい機会ですので、IAMロールを使用したクロスアカウントアクセスをEC2インスタンスプロファイルで実行しました。

S3のコマンドは、SSMセッションマネージャから実行してます。
ssm-userでも特に問題なく設定できました。

ほとんどこちらのブログ別アカウントのS3バケットを利用する手順を参考にさせていただきました。
ありがとうございます!

アカウントA(S3バケットがある方)のIAMロールの設定

IAMポリシーは特定バケット以下へのPutObjectのみです。

これを「別のAWSアカウント」用のロールをアカウントBを指定して作成してアタッチしました。
結果として、次の画面のような信頼関係になりました。

このアカウントAのIAMロールのARNをアカウントB側で使用します。

アカウントB(EC2がある方)のIAMロールの設定

すでに起動しているEC2にIAMロールを割り当てているので、IAMポリシーをインラインポリシーで追加しました。
ResourceにはアカウントAで作成したIAMロールのARNを指定しました。

セッションマネージャでEC2にアクセスします。

credentialsファイルを以下のように作成しました。

試しにreadme.htmlをアップロードしてみました。

無事アップロードされました。

これで、画像ファイルのコピーは恙無く行えそうです。

sudo利用時

今回、最初にうっかりsudoで実行して、
「The config profile (s3_profile) could not be found」
となってしまいました。

ssm-userでsudo でroot権限で実行したのでssm-userのcredentialsが見つからないということのようです。
/root/.aws/credentialsにプロファイル情報を作ればsudoでも実行できました。


最後までお読みいただきましてありがとうございました!

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS ,

ad

ad

  関連記事

AWS Lambda(Python)でDynamoDB テーブルを日次で削除/作成(オートスケーリング付き)

この記事はAWS #2 Advent Calendar 2018に参加した記事で …

RDSのスナップショットをS3へエクスポートが日本語マネジメントコンソールでもできるようになってました

RDSスナップショットをS3にエクスポートする新機能を試そうかと思ったのときは、 …

AWS LambdaのSQSへの自前ポーリングをやめてSQSイベントソーストリガーに変更した

以前は、LambdaがSQSからメッセージを受信するには、キューをポーリングして …

AWS LambdaでChrome HeadlessドライバをAWS Lambda Layersから使う

この記事はSelenium/Appium Advent Calendar 201 …

Amazon Aurora Serverlessを使い始めてみました(1日経過しての課金結果も)

祝!!! Amazon Aurora ServerlessがGAになりました! …

Amazon Pollyを使って覚えたい資料を耳から身体に染み込ませる

Amazon Pollyを使うとソースコードを一切かかなくても、テキストを音声に …

AWS Cloud9でJavaサンプルを実行する

リモートで共有開発ができるCloud9便利ですね。 Cloud9でJavaのサン …

2017年、このブログ(WordPress(Amazon EC2 + RDS))で対応してきたこと

Amazon Web Services Advent Calendar 2017 …

Amazon Elasticsearch ServiceにMySQLのデータを投入してkibanaで可視化してみる

MySQLのデータの可視化にAmazon Elasticsearch Servi …

AWS Cloud9で環境を共有する

(特にリモート環境では)画面共有をしたり、リポジトリを共有したり、コーディング環 …