S3 バケットを AWS CloudFormation スタックとして正常にインポートしました - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

S3 バケットを AWS CloudFormation スタックとして正常にインポートしました

Ram Kandaswamy、Amazon Web Services

概要

Amazon Simple Storage Service (Amazon S3) バケットなどのAmazon Web Services (AWS) リソースを使用し、コードとしての infrastructure as code (IaC) アプローチを使用したい場合は、リソースを AWS CloudFormation にインポートしてスタックとして管理できます。

このパターンは、S3 バケットを AWS CloudFormation スタックとして正常にインポートするための手順を示しています。このパターンの方法を使用すると、S3 バケットを 1 回のアクションでインポートした場合に発生する可能性のあるエラーを回避できます。

前提条件と制限

前提条件

アーキテクチャ

CloudFormation テンプレートを使用して S3 バケットをインポートする CloudFormation スタックを作成するワークフロー。

この図表は、次のワークフローを示しています:

  1. ユーザーは JSON 形式または YAML 形式の AWS CloudFormation テンプレートを作成します。

  2. このテンプレートは、S3 バケットをインポートするための AWS CloudFormation スタックを作成します。

  3. AWS CloudFormation スタックは、テンプレートで指定した S3 バケットを管理します。

テクノロジースタック

  • AWS CloudFormation

  • AWS Identity and Access Management (IAM)

  • AWS KMS

  • Amazon S3

ツール

  • AWS CloudFormation」— AWS CloudFormation は、AWS インフラストラクチャのデプロイメントを予測可能かつ繰り返し作成し、プロビジョニングするのに役立ちます。

  • AWS Identity and Access Management (IAM)」— IAM は、AWS サービスへのアクセスをセキュアに制御するためのウェブサービスです。

  • AWS KMS」— AWS Key Management Service (AWS KMS) は、クラウド向けに拡張された暗号化およびキー管理サービスです。

  • Amazon S3」— Amazon Simple Storage Service (Amazon S3)は、インターネット用のストレージです。

エピック

タスク説明必要なスキル

S3 バケットと KMS キーをインポートするテンプレートを作成します。

ローカルコンピュータで、次のサンプルテンプレートを使用して S3 バケットと KMS キーをインポートするテンプレートを作成します。

AWSTemplateFormatVersion: 2010-09-09 Parameters: bucketName: Type: String Resources: S3Bucket: Type: 'AWS::S3::Bucket' DeletionPolicy: Retain Properties: BucketName: !Ref bucketName BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: 'aws:kms' KMSMasterKeyID: !GetAtt - KMSS3Encryption - Arn KMSS3Encryption: Type: 'AWS::KMS::Key' DeletionPolicy: Retain Properties: Enabled: true KeyPolicy: !Sub |- { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::${AWS::AccountId}:root"] }, "Action": "kms:*", "Resource": "*" } } ] } EnableKeyRotation: true
AWS DevOps

スタックを作成します。

  1. AWS マネジメントコンソールにサインインし、AWS CloudFormation コンソールを開き、[スタックの表示]、[スタックの作成]、[既存のリソースを使用 (リソースのインポート)] の順に選択します。

  2. [テンプレートファイルをアップロード] を選択し、先ほど作成したテンプレートファイルをアップロードします。

  3. スタックの名前を入力し、必要に応じて残りのオプションを設定します。

  4. [スタックの作成] を選択し、スタックのステータスが IMPORT_COMPLETE に変わるのを待ちます。

AWS DevOps

KMS キーエイリアスを作成します。

  1. AWS CloudFormation コンソールで [スタック] を選択し、前に作成したスタックの名前を選択し、[テンプレート] ペインを選択して、[デザイナーで表示] を選択します。

  2. テンプレートの Resource セクションに次のスニペットを追加し、[スタックを作成] を選択してウィザードを完了します。

KMSS3EncryptionAlias: Type: 'AWS::KMS::Alias' DeletionPolicy: Retain Properties: AliasName: alias/S3BucketKey TargetKeyId: !Ref KMSS3Encryption

これに関する詳細については、AWS CloudFormation ドキュメントの「AWS CloudFormation スタックの更新」を参照してください。 

AWS DevOps

S3 バケットポリシーを含むようにスタックを更新する。

  1. AWS CloudFormation コンソールで [スタック] を選択し、前に作成したスタックの名前を選択し、[テンプレート] ペインを選択して、[デザイナーで表示] を選択します。

  2. テンプレートの Resource セクションに次のスニペットを追加し、[スタックを作成] を選択してウィザードを完了します。

S3BucketPolicy: Type: 'AWS::S3::BucketPolicy' Properties: Bucket: !Ref S3Bucket PolicyDocument: !Sub |- { "Version": "2008-10-17", "Id": "restricthttp", "Statement": [ { "Sid": "denyhttp", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "s3:*", "Resource": ["arn:aws:s3:::${S3Bucket}","arn:aws:s3:::${S3Bucket}/*"], "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
注記

この S3 バケットポリシーには、安全でない API コールを制限する拒否ステートメントがあります。 

AWS DevOps

キーポリシーを更新します。

  1. AWS CloudFormation コンソールで [スタック] を選択し、前に作成したスタックの名前を選択し、[テンプレート] ペインを選択して、[デザイナーで表示] を選択します。

  2. テンプレートの KMS リソースを変更して、管理者が KMS キーを管理できるようにするキーポリシーを含めます。

  3. [スタックの作成] を選択し、[次へ] を選択して、要件に従ってウィザードを完了します。

詳細については、AWS KMS ドキュメントの「 のキーポリシー AWS KMS」を参照してください。

AWS 管理者

リソースレベルのタグを追加します。

  1. AWS CloudFormation コンソールで [スタック] を選択し、前に作成したスタックの名前を選択し、[テンプレート] ペインを選択して、[デザイナーで表示] を選択します。

  2. テンプレートの Amazon S3 リソース Properties セクションに次のスニペットを追加し、[スタックを作成] を選択してウィザードを完了します。

Tags: - Key: createdBy Value: Cloudformation
AWS DevOps

関連リソース

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip