Management)の学習のため、IAMロールを作成し、特定のEC2インスタンスだけがS3バケットのファイルを操作できる状態を実現します。構成図EC2インスタンスがS3バケットの一覧表示・データ取得・書き込みをできるようにします。Service)上でデータを保存するためのコンテナのことです。S3では、ファイルやデータのようなオブジェクトをバケット内に保存できます。バケットはデータを整理するフォルダのようなイメージです。Storageサービスに該当します。S3ページから「バケットを作成」を選択します。有効にする「バケットを作成」ボタンを押します。暗号化のタイプ暗号化のタイプの項目で、SSE-S3とSSE-KMSが選択できます。SSE-S3は、AmazonS3側でキーの管理を行なってくれるタイプです。一方で、SSE-KMSは、AWSのキーマネジメントサービス(KMS)を使って、ユーザー自身でキーを管理するタイプです。SSE-KMSでは、実際にKMSにリソースを作って使用します。同一アカウント内のリソースからS3を使用する用途では、AWS側にキー管理を丸っとお任せするSSE-S3で十分のようです。このS3を他のアカウントのリソースからアクセスさせたい場合は、SSE-KMSを選択します。他のアカウント使用者にキーを提供するため、SSE-KMSを選択し、KMSにキーを作成しておく必要があります。今回は異なるアカウントからアクセスするような複雑なことは行いませんので、当然**(SSE-S3)**を選択します。S3バケットを操作するためのロール・ポリシーを作成する今回、EC2からS3バケットに対して、一覧表示・データ取得・書き込みの操作ができるようにします。これを実現するには、次の3ステップを踏む必要があります。特定のS3バケットに一覧表示・データ取得・書き込みする権限を持つカスタムポリシーを作成するIAMロールを作成し、1で作成したポリシーを関連付けする2のIAMロールをEC2インスタンスに関連付けするこの手順を踏むことで、EC2インスタンスからS3バケットへの一覧表示・データ取得・書き込みの操作ができるようになります。IAMロールとはポリシーやロールを作成する前に、IAMポリシー&IAMロールとは何か確認しておきます。IAMロールAWSリソースに一時的にアクセス権限を付与するためのものですIAMユーザーと異なり、ユーザー名やパスワードなどの永続的な資格情報を持ちません。その代わりに、必要なタイミングで一時的に使用するセキュリティトークンが発行されますIAMポリシーAWSリソースに対するアクセス権限を定義したものですIAMユーザー、IAMロール、IAMグループに関連付けして使用します。関連付けして初めて、ポリシーは効力発揮します。複数のポリシーを意味のある単位でまとめたものがIAMロールと考えることができます。ポリシーを一つも持たないIAMロールは何の権限も持たないため、実質的には何の効力もありません。下記は、IAMポリシーをJSON形式で表現したものです。]}上記の例が定義していることをまとめると、bucket-for-ec2というS3バケットとその中のオブジェクトに対する(Resource)書き込み、読み取り、一覧表示というアクションを(Action)許可する(Effect)ということになります。Effect次の項目以降で指定するアクションを"許可する(Allow)"のか"拒否する(Deny)"のかを指定する項目です。ActionAWSサービスのアクションのリストです。インスタンスを起動する。セキュリティグループの詳細情報を取得する。S3バケットの一覧表示をするなど無数のアクションがあります。Name)のリストです。今回の例だと、書き込み、読み取り、一覧表示が許可される先のS3バケットとS3バケット内のオブジェクトが指定されています。IAMポリシーを作成するでは、実際にポリシーを作成していきます。AWSコンソールからIAMページに移動し、ポリシーを選択します。PolicyForTestBucketアクセス許可で何をできるかを指定しています。リソースではどのリソースに対してを指定しています。このケースでは、先ほど作成したbucket-for-ec2というS3バケットを指定しました。このポリシーは、bucket-for-ec2というS3バケットに対して、リスト表示、読み取り、書き込みの操作ができることを示しています。ポリシーを作成します。すると、カスタマー管理のポリシーが追加されているのが分かります。ポリシーをJSONで確認する作成後のポリシーをJSONで確認すると、以下のようになっています。]}IAMロールを作成する続いて、今作成したポリシーを関連付けるIAMロールを作成します。AWSコンソールからIAMページに移動し、ロールを選択します。RoleForTestS3BucketEC2にIAMロールをアタッチするEC2に作成したIAMロールをアタッチします。アタッチすることで初めて、EC2はS3バケットへの操作ができるようになります。EC2のインスタンスのページに移ります。RoleForTestS3Bucket(先ほど作成したIAMロール)IAMロールの更新を押します。EC2インスタンスの詳細ページのセキュリティタブから関連付けされたIAMロールが確認できます。EC2からS3への操作を行うEC2へのIAMロール付与が完了していますので、作成したS3バケットに対して書き込み、一覧表示、データ取得ができるようになったはずです。EC2インスタンスにSSH接続します。テスト用のファイルを作成して、S3バケットにアップロードできることを確認します。s3://bucket-for-ec2/documents/test.txt続いて、一覧表示できることを確認します。test.txt先ほどアップロードしたファイルがあることが確認できました。最後に、ファイルをダウンロードします。test_downloaded.txtS3バケットにあるtest.txtをEC2ローカルにtest_downloaded.txtとしてダウンロードされたことが確認できました。IAMロールがアタッチされていない場合テストのため、EC2にアタッチされたIAMロール(RoleForTestS3Bucket)をデタッチします。その後、S3バケット内のオブジェクトの一覧表示を試みます。configure".ご覧の通り、EC2からS3バケットの一覧表示ができなくなりました。しみゆーWebエンジニア3年目。サーバーサイド・フロントエンド両方で開発中。Azureも触ります。Web制作系の仕事を経てエンジニアになりました。Core/TypeScript/Nuxt.js/スクラム。最近はAzureに力を入れています。AZ-204バッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。バッジを贈るDiscussionしみゆーWebエンジニア3年目。サーバーサイド・フロントエンド両方で開発中。Azureも触ります。Web制作系の仕事を経てエンジニアになりました。Core/TypeScript/Nuxt.js/スクラム。最近はAzureに力を入れています。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。