

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 1단계: Amazon S3 버킷 생성
<a name="using-s3-bucket"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

먼저 Amazon S3 버킷을 만들어야 합니다. Amazon S3 콘솔, API 또는 CLI를 사용하여 직접 만들 수도 있지만 리소스를 생성하는 더 간단한 방법은 CloudFormation 템플릿을 사용하는 것입니다. 다음 템플릿은 이 예제를 위한 Amazon S3 버킷을 생성하고, 버킷에 대한 무제한 액세스를 허용하는 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html)을 사용하여 [인스턴스 프로파일](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html)을 설정합니다. 그런 다음 계층 설정을 사용하여 스택의 애플리케이션 서버 인스턴스에 인스턴스 프로파일을 연결하면 뒤에 설명하는 것처럼 애플리케이션이 버킷에 액세스할 수 있습니다. 인스턴스 프로파일의 유용성은 Amazon S3로 국한되지 않습니다. 인스턴스 프로파일은 다양한 AWS 서비스를 통합하는 데에도 매우 중요합니다.

```
{
   "AWSTemplateFormatVersion" : "2010-09-09",
   "Resources" : {
      "AppServerRootRole": {
         "Type": "AWS::IAM::Role",
         "Properties": {
            "AssumeRolePolicyDocument": {
               "Statement": [ {
                  "Effect": "Allow",
                  "Principal": {
                     "Service": [ "ec2.amazonaws.com" ]
                  },
                  "Action": [ "sts:AssumeRole" ]
               } ]
            },
            "Path": "/"
         }
      },
      "AppServerRolePolicies": {
         "Type": "AWS::IAM::Policy",
         "Properties": {
            "PolicyName": "AppServerS3Perms",
            "PolicyDocument": {
               "Statement": [ {
                  "Effect": "Allow",
                  "Action": "s3:*",
                  "Resource": { "Fn::Join" : ["", [ "arn:aws:s3:::", { "Ref" : "AppBucket" } , "/*" ]
                  ] }
               } ]
            },
            "Roles": [ { "Ref": "AppServerRootRole" } ]
         }
      },
      "AppServerInstanceProfile": {
         "Type": "AWS::IAM::InstanceProfile",
         "Properties": {
            "Path": "/",
            "Roles": [ { "Ref": "AppServerRootRole" } ]
         }
      },
     "AppBucket" : {
      "Type" : "AWS::S3::Bucket"
      }
   },
   "Outputs" : {
       "BucketName" : {
           "Value" : { "Ref" : "AppBucket" }
       },
       "InstanceProfileName" : {
           "Value" : { "Ref" : "AppServerInstanceProfile" }
       }
   }
}
```

템플릿을 시작하면 다음과 같은 몇 가지 작업이 이루어집니다.
+ `[AWS::S3::Bucket](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html)` 리소스가 Amazon S3 버킷을 생성합니다.
+ `[AWS::IAM::InstanceProfile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html)` 리소스가 애플리케이션 서버 인스턴스에 할당될 인스턴스 프로파일을 생성합니다.
+ `[AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)` 리소스가 인스턴스 프로파일의 역할을 생성합니다.
+ Amazon S3 버킷에 대한 무제한 액세스가 가능하도록 `[AWS::IAM::Policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html)` 리소스가 역할의 권한을 설정합니다.
+ 템플릿을 시작한 후 `Outputs` 섹션에는 CloudFormation 콘솔에 버킷 및 인스턴스 프로파일 이름이 표시됩니다.

  스택과 앱을 설정하려면 이 값들이 필요합니다.

 CloudFormation 템플릿을 생성하는 방법에 대한 자세한 내용은 [템플릿 기본 정보 학습을 참조하세요](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html).

**Amazon S3 버킷을 생성하려면**

1. 예제 템플릿을 시스템의 텍스트 파일에 복사합니다.

   이 예제에서는 파일의 이름을 `appserver.template`(이)라고 가정합니다.

1. [CloudFormation](https://console.aws.amazon.com/cloudformation/) 콘솔을 열고 **스택 생성**을 선택합니다.

1. [**스택 이름**] 상자에 스택 이름을 입력합니다.

   이 예제에서는 이름을 **AppServer**(이)라고 가정합니다.

1. **템플릿 파일 업로드**, **찾아보기**를 차례로 선택하고 1단계에서 만든 `appserver.template` 파일을 선택한 후 **다음 단계**를 선택합니다.

1. **파라미터 지정** 페이지에서 **이 템플릿이 IAM 리소스를 생성할 수 있음을 확인합니다.**를 선택한 다음 마지막 페이지에 도달할 때까지 마법사의 각 페이지에서 **다음 단계**를 선택합니다. **생성(Create)**을 선택합니다.

1. **AppServer** 스택이 **CREATE\$1COMPLETE** 상태에 도달하면 이 스택을 선택한 후 **출력** 탭을 선택합니다.

   상태를 업데이트하려면 여러 번 새로 고침해야 할 수 있습니다.

1. [**출력**] 탭에서 나중에 사용하기 위해 [**BucketName**] 및 [**InstanceProfileName**] 값을 기록합니다.

**참고**  
CloudFormation 는 *스택*이라는 용어를 사용하여 템플릿에서 생성된 리소스 모음을 참조합니다. 이는 OpsWorks Stacks 스택과 동일하지 않습니다.