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

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

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

作成者: Ram Kandaswamy (AWS)

環境: 実稼働

テクノロジー: CloudNative; ストレージとバックアップ

AWS サービス: Amazon S3、AWS CloudFormation

[概要]

Amazon Simple Storage Service (Amazon S3) バケットなどの Amazon Web Services (AWS) リソースを使用し、コードとしてのインフラストラクチャ (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 バケットと CMK をインポートするテンプレートを作成します。

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

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 ドキュメントの「AWS CloudFormation スタックの更新」を参照してください。 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 リソースを変更して、管理者が CMK を管理できるようにするキーポリシーを含めます。

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

詳細については、AWS KMS ドキュメントの「AWS KMS でのキーポリシーの使用」と「キー管理者による CMK の管理の許可」を参照してください。

AWS 管理者

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

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

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

Tags: - Key: createdBy Value: Cloudformation
AWS DevOps

関連リソース

添付ファイル

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