

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

# CI/CD 시스템 및 파이프라인을 사용하여 로 배포 AWS SAM
<a name="deploying-cicd-overview"></a>

AWS SAM 는 조직이 선호하는 CI/CD 시스템에 대한 파이프라인을 생성하도록 지원하므로 배포 빈도 가속화, 변경 리드 타임 단축, 배포 오류 감소 등 최소한의 노력으로 CI/CD의 이점을 실현할 수 있습니다.

AWS SAM 는 컨테이너 이미지 빌드를 통해 서버리스 애플리케이션의 CI/CD 작업을 간소화합니다. 에서 AWS SAM 제공하는 이미지에는 지원되는 여러 AWS Lambda 런타임에 AWS SAM CLI 대한 및 빌드 도구가 포함되어 있습니다. 이렇게 하면를 사용하여 서버리스 애플리케이션을 더 쉽게 빌드하고 패키징할 수 있습니다 AWS SAM CLI. 또한 이러한 이미지를 사용하면 작업팀들이 CI/CD 시스템용 이미지를 직접 만들고 관리해야 할 필요성이 줄어듭니다. AWS SAM 빌드 컨테이너 이미지에 대한 자세한 내용은 섹션을 참조하세요[의 이미지 리포지토리 AWS SAM](serverless-image-repositories.md).

여러 CI/CD 시스템이 AWS SAM 빌드 컨테이너 이미지를 지원합니다. 사용해야 하는 CI/CD 시스템은 여러 요인에 따라 달라집니다. 여기에는 애플리케이션이 단일 런타임을 사용하는지 다중 런타임을 사용하는지, 컨테이너 이미지 내에 애플리케이션을 구축할지 아니면 가상 머신(VM) 또는 베어메탈 호스트와 같은 호스트 머신에 직접 빌드할지 여부가 포함됩니다.

AWS SAM 는의 AWS배포 모범 사례를 캡슐화하는 여러 CI/CD 시스템에 대한 기본 파이프라인 템플릿 세트도 제공합니다. 이러한 기본 파이프라인 템플릿은 표준 JSON/YAML 파이프라인 구성 형식을 사용하며, 내장된 모범 사례는 다중 계정 및 다중 지역 배포를 수행하고 파이프라인이 인프라를 의도하지 않게 변경할 수 없도록 확인하는 데 도움이 됩니다.

를 사용하여 서버리스 애플리케이션을 배포 AWS SAM 하는 두 가지 주요 옵션이 있습니다. 1) 명령을 사용하도록 AWS SAM CLI 기존 파이프라인 구성을 수정하거나 2) 자체 애플리케이션의 시작점으로 사용할 수 있는 예제 CI/CD 파이프라인 구성을 생성합니다.

**Topics**
+ [파이프라인이란 무엇입니까?](#deploying-whatis-pipeline)
+ [가 배포 시 로컬 파일을 AWS SAM 업로드하는 방법](deploy-upload-local-files.md)
+ [를 사용하여 스타터 CI/CD 파이프라인 생성 AWS SAM](serverless-generating-example-ci-cd.md)
+ [를 사용하여 스타터 파이프라인을 사용자 지정하는 방법 AWS SAM](serverless-customizing-starter-pipelines.md)
+ [AWS SAM 애플리케이션 배포 자동화](serverless-deploying-modify-pipeline.md)
+ [AWS SAM 파이프라인에서 OIDC 인증을 사용하는 방법](deploying-with-oidc.md)

## 파이프라인이란 무엇입니까?
<a name="deploying-whatis-pipeline"></a>

파이프라인은 애플리케이션의 새 버전을 릴리스하기 위해 수행되는 자동화된 단계의 시퀀스입니다. 를 사용하면 AWS SAM, [AWS CodePipeline](https://aws.amazon.com/codepipeline) [Jenkins](https://www.jenkins.io/), [GitLab CI/CD, GitHub Actions 등 많은 공통 CI/CD](https://docs.gitlab.com/ee/ci/) 시스템을 사용하여 애플리케이션을 배포할 수 있습니다. [GitHub ](https://github.com/features/actions)

파이프라인 템플릿에는 다중 계정 및 다중 리전 AWS 배포에 도움이 되는 배포 모범 사례가 포함되어 있습니다. 개발 및 프로덕션과 같은 AWS 환경은 일반적으로 서로 다른 AWS 계정에 존재합니다. 이를 통해 개발 팀은 의도하지 않은 인프라 변경을 방지하면서 안전한 배포 파이프라인을 구성할 수 있습니다.

고유한 사용자 지정 파이프라인 템플릿을 제공하여 전체 개발 팀에서 파이프라인을 표준화할 수도 있습니다.

# 가 배포 시 로컬 파일을 AWS SAM 업로드하는 방법
<a name="deploy-upload-local-files"></a>

애플리케이션을에 배포할 때 AWS 클라우드는 로컬 파일을 먼저 Amazon Simple Storage Service(Amazon S3)와 같은 액세스 가능한 AWS 서비스에 업로드해야 AWS CloudFormation 합니다. 여기에는 AWS SAM 템플릿이 참조하는 로컬 파일이 포함됩니다. 이 요구 사항을 충족하기 위해 `sam deploy` 또는 `sam package` 명령을 사용할 경우 AWS SAM CLI는 다음을 수행합니다.

1. 로컬 파일을 액세스 가능한 AWS 서비스에 자동으로 업로드합니다.

1. 새 파일 경로를 참조하도록 애플리케이션 템플릿을 자동으로 업데이트합니다.

**Topics**
+ [데모: AWS SAMCLI를 사용하여 Lambda 함수 코드를 업로드합니다.](#deploy-upload-local-files-demo)
+ [지원되는 사용 사례](#deploy-upload-local-files-use)
+ [자세히 알아보기](#deploy-upload-local-files-learn)

## 데모: AWS SAMCLI를 사용하여 Lambda 함수 코드를 업로드합니다.
<a name="deploy-upload-local-files-demo"></a>

이 데모에서는 Lambda 함수에 .zip 패키지 유형을 사용하여 샘플 Hello World 애플리케이션을 초기화합니다. AWS SAMCLI를 사용하여 Lambda 함수 코드를 Amazon S3에 자동으로 업로드하고 애플리케이션 템플릿에서 새 경로를 참조합니다.

먼저 Hello World 애플리케이션을 초기화하기 위해 `sam init`를 실행합니다.

```
$ sam init
...
Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
Choice: 1

Choose an AWS Quick Start application template
        1 - Hello World Example
        2 - Multi-step workflow
        ...
Template: 1

Use the most popular runtime and package type? (Python and zip) [y/N]: y

Would you like to enable X-Ray tracing on the function(s) in your application?  [y/N]: ENTER

Would you like to enable monitoring using CloudWatch Application Insights?
For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]: ENTER

Project name [sam-app]: demo

    -----------------------
    Generating application:
    -----------------------
    Name: demo
    Runtime: python3.9
    Architectures: x86_64
    Dependency Manager: pip
    Application Template: hello-world
    Output Directory: .
    Configuration file: demo/samconfig.toml
    
...
```

Lambda 함수 코드는 프로젝트의 `hello_world` 하위 디렉터리에 구성되어 있습니다.

```
demo
├── README.md
├── hello_world
│   ├── __init__.py
│   ├── app.py
│   └── requirements.txt
├── template.yaml
└── tests
```

 AWS SAM 템플릿 내에서 `CodeUri` 속성을 사용하여 Lambda 함수 코드의 로컬 경로를 참조합니다.

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.9
      ...
```

다음으로 애플리케이션을 빌드하고 배포를 준비하기 위해 `sam build`를 실행합니다.

```
$ sam build
Starting Build use cache
Manifest file is changed (new hash: 3298f13049d19cffaa37ca931dd4d421) or dependency folder (.aws-sam/deps/7896875f-9bcc-4350-8adb-2c1d543627a1) is missing for (HelloWorldFunction), downloading dependencies and copying/building source
Building codeuri: /Users/.../demo/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction
Running PythonPipBuilder:CleanUp
Running PythonPipBuilder:ResolveDependencies
Running PythonPipBuilder:CopySource
Running PythonPipBuilder:CopySource

Build Succeeded

Built Artifacts  : .aws-sam/build
Built Template   : .aws-sam/build/template.yaml
...
```

다음으로 `sam deploy --guided`를 실행하여 애플리케이션을 배포합니다.

```
$ sam deploy --guided

Configuring SAM deploy
======================

        Looking for config file [samconfig.toml] :  Found
        Reading default arguments  :  Success

        Setting default arguments for 'sam deploy'
        =========================================
        Stack Name [demo]: ENTER
        AWS Region [us-west-2]: ENTER
        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
        Confirm changes before deploy [Y/n]: n
        #SAM needs permission to be able to create roles to connect to the resources in your template
        Allow SAM CLI IAM role creation [Y/n]: ENTER
        #Preserves the state of previously provisioned resources when an operation fails
        Disable rollback [y/N]: ENTER
        HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
        Save arguments to configuration file [Y/n]: ENTER
        SAM configuration file [samconfig.toml]: ENTER
        SAM configuration environment [default]: ENTER

        Looking for resources needed for deployment:
        ...
        Saved arguments to config file
        Running 'sam deploy' for future deployments will use the parameters saved above.
        The above parameters can be changed by modifying samconfig.toml
        Learn more about samconfig.toml syntax at 
        https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html

File with same data already exists at demo/da3c598813f1c2151579b73ad788cac8, skipping upload

        Deploying with following values
        ===============================
        Stack name                   : demo
        Region                       : us-west-2
        Confirm changeset            : False
        Disable rollback             : False
        Deployment s3 bucket         : aws-sam-cli-managed-default-samclisam-s3-demo-bucket-1a4x26zbcdkqr
        Capabilities                 : ["CAPABILITY_IAM"]
        Parameter overrides          : {}
        Signing Profiles             : {}

Initiating deployment
=====================
...
Waiting for changeset to be created..
CloudFormation stack changeset
-------------------------------------------------------------------------------------------------
Operation                LogicalResourceId        ResourceType             Replacement            
-------------------------------------------------------------------------------------------------
+ Add                    HelloWorldFunctionHell   AWS::Lambda::Permissio   N/A                    
                         oWorldPermissionProd     n                                               
+ Add                    HelloWorldFunctionRole   AWS::IAM::Role           N/A                    
...                     
-------------------------------------------------------------------------------------------------

Changeset created successfully. arn:aws:cloudformation:us-west-2:012345678910:changeSet/samcli-deploy1680906292/1164338d-72e7-4593-a372-f2b3e67f542f

2023-04-07 12:24:58 - Waiting for stack create/update to complete

CloudFormation events from stack operations (refresh every 5.0 seconds)
-------------------------------------------------------------------------------------------------
ResourceStatus           ResourceType             LogicalResourceId        ResourceStatusReason   
-------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS       AWS::IAM::Role           HelloWorldFunctionRole   -                      
CREATE_IN_PROGRESS       AWS::IAM::Role           HelloWorldFunctionRole   Resource creation      
                                                                           Initiated              
...                    
-------------------------------------------------------------------------------------------------
CloudFormation outputs from deployed stack
-------------------------------------------------------------------------------------------------
Outputs                                                                                         
-------------------------------------------------------------------------------------------------
Key                 HelloWorldFunctionIamRole                                                   
Description         Implicit IAM Role created for Hello World function                          
Value               arn:aws:iam::012345678910:role/demo-HelloWorldFunctionRole-VQ4CU7UY7S2K     

Key                 HelloWorldApi                                                               
Description         API Gateway endpoint URL for Prod stage for Hello World function            
Value               https://satnon55e9.execute-api.us-west-2.amazonaws.com/Prod/hello/          

Key                 HelloWorldFunction                                                          
Description         Hello World Lambda Function ARN                                             
Value               arn:aws:lambda:us-west-2:012345678910:function:demo-                        
HelloWorldFunction-G14inKTmSQvK                                                                 
-------------------------------------------------------------------------------------------------
Successfully created/updated stack - demo in us-west-2
```

배포 중에 AWS SAMCLI는 Lambda 함수 코드를 Amazon S3에 자동으로 업로드하고 템플릿을 업데이트합니다. CloudFormation 콘솔에서 수정된 템플릿은 Amazon S3 버킷 경로를 반영합니다.

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: s3://aws-sam-cli-managed-default-samclisam-s3-demo-bucket-1a4x26zbcdkqr/demo/da3c598813f1c2151579b73ad788cac8
      Handler: app.lambda_handler
      ...
```

## 지원되는 사용 사례
<a name="deploy-upload-local-files-use"></a>

는 AWS SAM CLI 여러 파일 유형, CloudFormation 리소스 유형 및 CloudFormation 매크로에 대해이 프로세스를 자동으로 용이하게 할 수 있습니다.

### 파일 유형
<a name="deploy-upload-local-files-use-types"></a>

애플리케이션 파일 및 Docker 이미지가 지원됩니다.

### CloudFormation 리소스 유형
<a name="deploy-upload-local-files-use-resources"></a>

다음은 지원되는 리소스 유형 및 해당 속성의 목록입니다.


| Resource | 속성 | 
| --- | --- | 
| AWS::ApiGateway::RestApi | BodyS3Location | 
| AWS::ApiGatewayV2::Api | BodyS3Location | 
| AWS::AppSync:FunctionConfiguration |  `CodeS3Location` `RequestMappingTemplateS3Location` `ResponseMappingTemplateS3Location`  | 
| AWS::AppSync::GraphQLSchema | DefinitionS3Location | 
| AWS::AppSync::Resolver |  `CodeS3Location` `RequestMappingTemplateS3Location` `ResponseMappingTemplateS3Location`  | 
| AWS::CloudFormation::ModuleVersion | ModulePackage | 
| AWS::CloudFormation::ResourceVersion | SchemaHandlerPackage | 
| AWS::ECR::Repository | RepositoryName | 
| AWS::ElasticBeanstalk::ApplicationVersion | SourceBundle | 
| AWS::Glue::Job | Command.ScriptLocation | 
| AWS::Lambda::Function |  `Code` `Code.ImageUri`  | 
| AWS::Lambda::LayerVersion | Content | 
| AWS::Serverless::Api | DefinitionUri | 
| AWS::Serverless::Function |  `CodeUri` `ImageUri`  | 
| AWS::Serverless::GraphQLApi |  `SchemaUri` `Function.CodeUri` `Resolver.CodeUri`  | 
| AWS::Serverless::HttpApi | DefinitionUri | 
| AWS::Serverless::LayerVersion | ContentUri | 
| AWS::Serverless::StateMachine | DefinitionUri | 
| AWS::StepFunctions::StateMachine | DefinitionS3Location | 

### CloudFormation 매크로
<a name="deploy-upload-local-files-use-macros"></a>

`AWS::Include` 변환 매크로를 사용하여 참조된 파일이 지원됩니다.

## 자세히 알아보기
<a name="deploy-upload-local-files-learn"></a>

`AWS::Include` 변환에 대해 자세히 알아보려면 *AWS CloudFormation 사용 설명서*의 [AWS::Include 변환](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html) 섹션을 참조하세요.

 AWS SAM 템플릿에서 `AWS::Include` 변환을 사용하는 예를 보려면 * Serverless Land*의 [API Gateway HTTP API to SQS](https://serverlessland.com/patterns/apigw-sqs) 패턴을 참조하세요.

# 를 사용하여 스타터 CI/CD 파이프라인 생성 AWS SAM
<a name="serverless-generating-example-ci-cd"></a>

배포를 자동화할 준비가 되면 AWS SAM의 스타터 파이프라인 템플릿 중 하나를 사용하여 사용하려는 CI/CD 시스템에 대한 배포 파이프라인을 생성할 수 있습니다. 서버리스 애플리케이션의 배포를 자동화하려면 배포 파이프라인을 구성하고 사용해야 합니다. 스타터 파이프라인 템플릿은 서버리스 애플리케이션에 필요한 배포 파이프라인을 빠르게 설정할 수 있도록 사전 구성되어 있습니다.

스타터 파이프라인 템플릿이 있으면 [sam pipeline init](sam-cli-command-reference-sam-pipeline-init.md) 명령을 사용하여 몇 분 안에 파이프라인을 생성할 수 있습니다.

스타터 파이프라인 템플릿은 CI/CD 시스템의 친숙한 JSON/YAML 구문을 사용하며, 여러 계정 및 리전의 아티팩트 관리, 애플리케이션 배포에 필요한 최소한의 권한 사용 등의 모범 사례를 통합합니다. 현재 AWS SAM CLI는 [AWS CodePipeline](https://aws.amazon.com/codepipeline), [Jenkins](https://www.jenkins.io/), [GitLab CI/CD](https://docs.gitlab.com/ee/ci/), [GitHub Actions](https://github.com/features/actions), [Bitbucket Pipeline](https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/)에 대한 스타터 CI/CD 파이프라인 구성 생성을 지원합니다.

스타터 파이프라인 구성을 생성하기 위해 수행해야 하는 고급 수준은 태스크는 다음과 같습니다.

1. **인프라 리소스 생성** - 파이프라인에는 필요한 권한이 있는 IAM 사용자 및 역할, Amazon S3 버킷, 선택적으로 Amazon ECR 리포지토리와 같은 특정 AWS 리소스가 필요합니다.

1. **Git 리포지토리를 CI/CD 시스템에 연결** - CI/CD 시스템은 파이프라인 실행을 트리거할 Git 리포지토리를 알아야 합니다. 사용 중인 Git 리포지토리와 CI/CD 시스템의 조합에 따라 이 단계가 필요하지 않을 수도 있습니다.

1. **파이프라인 구성 생성** - 이 단계는 두 개의 배포 단계를 포함하는 스타터 파이프라인 구성을 생성합니다.

1. **파이프라인 구성을 Git 리포지토리에 커밋** - 이 단계는 CI/CD 시스템이 파이프라인 구성을 인식하도록 하는데 필요하며, 변경 사항이 커밋될 때 실행됩니다.

스타터 파이프라인 구성을 생성하여 Git 리포지토리에 커밋하면 누군가 해당 리포지토리에 코드 변경을 커밋할 때마다 파이프라인이 트리거되어 자동으로 실행됩니다.

이러한 단계의 순서와 각 단계의 세부 사항은 CI/CD 시스템에 따라 다릅니다.
+ 를 사용하는 경우 단원을 AWS CodePipeline참조하십시오[AWS CodePipeline 에서에 대한 스타터 파이프라인 생성 AWS SAM](serverless-generating-example-ci-cd-codepipeline.md).
+ Jenkins, GitLab CI/CD, GitHub Actions 또는 Bitbucket Pipeline을 사용하는 경우 [AWS SAM 를 사용하여 Jenkins, GitLab CI/CD, GitHub Actions, Bitbucket Pipelines용 스타터 파이프라인 생성](serverless-generating-example-ci-cd-others.md) 섹션을 참조하세요.

# AWS CodePipeline 에서에 대한 스타터 파이프라인 생성 AWS SAM
<a name="serverless-generating-example-ci-cd-codepipeline"></a>

에 대한 스타터 파이프라인 구성을 생성하려면 다음 작업을 다음 순서로 AWS CodePipeline수행합니다.

1. 인프라 리소스

1. 파이프라인 구성 생성

1. 파이프라인 구성을 Git에 커밋

1. Git 리포지토리를 CI/CD 시스템에 연결

**참고**  
다음 절차에서는 두 개의 AWS SAMCLI 명령, `sam pipeline bootstrap` 및 `sam pipeline init`을 사용합니다. 두 가지 명령이 있는 이유는 관리자(즉, IAM 사용자 및 역할과 같은 인프라 AWS 리소스를 설정할 권한이 필요한 사용자)가 개발자(즉, 개별 파이프라인을 설정할 권한만 필요하지만 필요한 인프라 AWS 리소스는 필요하지 않은 사용자)에게 더 많은 권한을 부여하는 사용 사례를 처리하기 위한 것입니다.

## 1단계: 인프라 리소스 생성
<a name="generating-example-step-1"></a>

를 사용하는 파이프라인에는 필요한 권한이 있는 IAM 사용자 및 역할, Amazon S3 버킷, 선택적으로 Amazon ECR 리포지토리와 같은 특정 AWS 리소스가 AWS SAM 필요합니다. 파이프라인의 각 배포 단계를 위한 인프라 리소스 세트가 있어야 합니다.

다음 명령을 실행하여 이 설정을 편집하거나 추가할 수 있습니다.

```
sam pipeline bootstrap
```

**참고**  
파이프라인의 각 배포 단계에 대해 이전 명령어를 실행합니다.

## 2단계: 파이프라인 구성 생성
<a name="generating-example-step-2"></a>

파이프라인 구성을 생성하려면 다음 명령을 실행합니다.

```
sam pipeline init
```

## 3단계: 파이프라인 구성을 Git 리포지토리에 커밋
<a name="generating-example-step-3"></a>

이 단계는 CI/CD 시스템이 파이프라인 구성을 인식하도록 할 때 필요하며, 변경 사항이 커밋될 때 실행됩니다.

## 4단계: Git 리포지토리를 CI/CD 시스템에 연결
<a name="generating-example-step-4"></a>

이제 다음 명령을 실행하여 연결을 생성할 AWS CodePipeline 수 있습니다.

```
sam deploy -t codepipeline.yaml --stack-name <pipeline-stack-name> --capabilities=CAPABILITY_IAM --region <region-X>
```

GitHub 또는 Bitbucket을 사용하는 경우, 이전에 **sam deploy** 명령을 실행한 후 *개발자 도구 콘솔 사용 안내서*의 [보류 중인 연결 업데이트](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html) 주제에 있는 **연결을 완료하려면** 섹션의 단계를 따라 연결을 완료합니다. 또한를 이외의 다른 브랜치와 AWS CodePipeline 함께 사용하려면 **sam deploy** 명령의 출력`CodeStarConnectionArn`에서의 사본을 저장해야 합니다`main`.

## 기타 브랜치 구성
<a name="configuring-other-branches"></a>

기본적으로는 `main`브랜치를와 함께 AWS CodePipeline 사용합니다 AWS SAM. `main` 이외의 브랜치를 사용하려면 **sam deploy** 명령을 다시 실행해야 합니다. 사용 중인 Git 리포지토리에 따라 `CodeStarConnectionArn`를 제공해야 합니다.

```
# For GitHub and Bitbucket
sam deploy -t codepipeline.yaml --stack-name <feature-pipeline-stack-name> --capabilities=CAPABILITY_IAM --parameter-overrides="FeatureGitBranch=<branch-name> CodeStarConnectionArn=<codestar-connection-arn>"

# For AWS CodeCommit
sam deploy -t codepipeline.yaml --stack-name <feature-pipeline-stack-name> --capabilities=CAPABILITY_IAM --parameter-overrides="FeatureGitBranch=<branch-name>"
```

## 자세히 알아보기
<a name="serverless-generating-cicd-learn"></a>

CI/CD 파이프라인을 설정하는 실습 예제는 *Complete AWS SAM Workshop*의 [ CI/CD with AWS CodePipeline](https://catalog.workshops.aws/complete-aws-sam/en-US/module-4-cicd) 섹션을 참조하세요.

# AWS SAM 를 사용하여 Jenkins, GitLab CI/CD, GitHub Actions, Bitbucket Pipelines용 스타터 파이프라인 생성
<a name="serverless-generating-example-ci-cd-others"></a>

Jenkins, GitLab CI/CD, GitHub Actions 또는 Bitbucket Pipeline에 대한 스타터 파이프라인 구성을 생성하려면 다음 태스크를 순서대로 수행합니다.

1. 인프라 리소스

1. Git 리포지토리를 CI/CD 시스템에 연결

1. 보안 인증 정보 객체 생성

1. 파이프라인 구성 생성

1. 파이프라인 구성을 Git 리포지토리에 커밋

**참고**  
다음 절차에서는 두 개의 AWS SAMCLI 명령, `sam pipeline bootstrap` 및 `sam pipeline init`을 사용합니다. 두 가지 명령이 있는 이유는 관리자(즉, IAM 사용자 및 역할과 같은 인프라 AWS 리소스를 설정할 권한이 필요한 사용자)가 개발자(즉, 개별 파이프라인을 설정할 권한만 필요하지만 필요한 인프라 AWS 리소스는 필요하지 않은 사용자)에게 더 많은 권한을 부여하는 사용 사례를 처리하기 위한 것입니다.

## 1단계: 인프라 리소스 생성
<a name="generating-example-step-1"></a>

를 사용하는 파이프라인에는 필요한 권한이 있는 IAM 사용자 및 역할, Amazon S3 버킷, 선택적으로 Amazon ECR 리포지토리와 같은 특정 AWS 리소스가 AWS SAM 필요합니다. 파이프라인의 각 배포 단계를 위한 인프라 리소스 세트가 있어야 합니다.

다음 명령을 실행하여 이 설정을 편집하거나 추가할 수 있습니다.

```
sam pipeline bootstrap
```

**참고**  
파이프라인의 각 배포 단계에 대해 이전 명령어를 실행합니다.

파이프라인의 각 배포 단계에 대한 파이프라인 사용자의 AWS 자격 증명(키 ID 및 보안 키)은 후속 단계에 필요하므로 캡처해야 합니다.

## 2단계: Git 리포지토리를 CI/CD 시스템에 연결
<a name="generating-example-step-2"></a>

CI/CD 시스템이 빌드 및 배포를 위해 애플리케이션 소스 코드에 액세스할 수 있으려면 Git 리포지토리를 CI/CD 시스템에 연결해야 합니다.

**참고**  
다음 중 하나를 사용하는 경우 연결은 자동으로 수행되므로 이 단계를 건너뛸 수 있습니다.  
GitHub 리포지토리를 사용한 GitHub Action
GitLab 리포지토리를 사용한 GitLab CI/CD
Bitbucket 리포지토리가 있는 Bitbucket Pipeline

Git 리포지토리를 CI/CD 시스템에 연결하려면 다음 중 하나를 수행합니다.
+ Jenkins를 사용하는 경우 [Jenkins 설명서](https://www.jenkins.io/doc/book/pipeline/multibranch/)의 ‘브랜치 소스에 추가’를 참조하세요.
+ GitLab이 아닌 GitLab CI/CD와 Git 리포지토리를 사용하고 있다면 [GitLab 설명서](https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/)에서 ‘외부 리포지토리에 연결’을 참조하세요.

## 3단계: 보안 인증 정보 객체 생성
<a name="generating-example-step-3"></a>

각 CI/CD 시스템은 CI/CD 시스템이 Git 리포지토리에 액세스하는 데 필요한 보안 인증 정보를 관리하는 고유한 방법을 가집니다.

필요한 보안 인증 정보 객체를 생성하려면 다음 중 하나를 수행합니다.
+ Jenkins를 사용하는 경우 키 ID와 보안 암호 키를 모두 저장하는 단일 ‘보안 인증 정보’을 만듭니다. [AWS SAM과 Jenkins Pipeline를 빌드](https://aws.amazon.com/blogs/compute/building-a-jenkins-pipeline-with-aws-sam/) 블로그, **Jenkins 구성** 섹션의 지침을 따르세요. 다음 단계에서 ‘보안 인증 id’가 필요합니다.
+ GitLab CI/CD를 사용하는 경우 키 ID와 보안 암호 키 각각에 하나씩, 두 개의 ‘보호되는 변수’를 만듭니다. [GitLab 설명서](https://docs.gitlab.com/ee/ci/variables/)의 지침을 따르세요. 다음 단계를 위해 두 개의 ‘변수 키’가 필요합니다.
+ GitHub Actions를 사용하는 경우 키와 보안 암호 키 각각에 하나씩, 두 개의 ‘암호화된 보안 암호’를 만듭니다. [GitHub 설명서](https://docs.github.com/en/actions/reference/encrypted-secrets)의 지침을 따르세요. 다음 단계를 수행하려면 두 개의 ‘보안 암호 이름’이 필요합니다.
+ Bitbucket Pipeline을 사용하는 경우, 키 ID와 보안 암호 키 각각에 하나씩, 두 개의 ‘보안 변수’를 만듭니다. [변수 및 보안 암호](https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets)의 지침을 따르세요. 다음 단계를 수행하려면 두 개의 ‘보안 암호 이름’이 필요합니다.

## 4단계: 파이프라인 구성 생성
<a name="generating-example-step-4"></a>

파이프라인 구성을 생성하려면 다음 명령을 실행합니다. 이전 단계에서 생성한 보안 인증 정보 객체를 입력해야 합니다.

```
sam pipeline init
```

## 5단계: 파이프라인 구성을 Git 리포지토리에 커밋
<a name="generating-example-step-5"></a>

이 단계는 CI/CD 시스템이 파이프라인 구성을 인식하도록 할 때 필요하며, 변경 사항이 커밋될 때 실행됩니다.

## 자세히 알아보기
<a name="serverless-generating-other-cicd-learn"></a>

GitHub Actions을 사용하여 CI/CD 파이프라인을 설정하는 실제 예제는 *전체 AWS SAM 워크샵*의 [GitHub을 사용한 CI/CD](https://s12d.com/sam-ws-en-gh) 섹션을 참조하세요.

# 를 사용하여 스타터 파이프라인을 사용자 지정하는 방법 AWS SAM
<a name="serverless-customizing-starter-pipelines"></a>

CI/CD 관리자는 조직의 개발자가 파이프라인 구성을 생성하는 데 사용할 수 있는 스타터 파이프라인 템플릿과 관련 안내 프롬프트를 사용자 지정할 수 있습니다.

 AWS SAMCLI는 스타터 템플릿을 생성할 때 Cookiecutter 템플릿을 사용합니다. 쿠키 커터 템플릿에 대한 자세한 내용은 [Cookiecutter](https://cookiecutter.readthedocs.io/en/latest/README.html) 섹션을 참조하세요.

`sam pipeline init` 명령을 사용하여 파이프라인 구성을 생성할 때 AWS SAMCLI가 사용자에게 표시하는 프롬프트를 사용자 지정할 수도 있습니다. 사용자 프롬프트를 사용자 지정하려면 다음을 수행합니다.

1. **`questions.json` 파일 만들기** - `questions.json` 파일은 프로젝트 저장소의 루트에 있어야 합니다. `cookiecutter.json` 파일과 동일한 디렉터리에 있습니다. `questions.json` 파일의 스키마를 보려면 [questions.json.schema](https://github.com/aws/aws-sam-cli/blob/2b831b29f76ac9c4e0cbcbd68b37f8f664e136d8/samcli/lib/pipeline/init/questions.json.schema)를 참조합니다. 예제 `questions.json` 파일을 보려면 [questions.json](https://github.com/aws/aws-sam-cli-pipeline-init-templates/blob/main/Jenkins/two-stage-pipeline-template/questions.json)을 참조합니다.

1. **질문 키와 쿠키 커터 이름 매핑** - `questions.json`파일의 각 객체에는 쿠키 커터 템플릿의 이름과 일치하는 키가 필요합니다. 이 키 매칭은 AWS SAMCLI가 사용자 프롬프트 응답을 쿠키 커터 템플릿에 매핑하는 방식입니다. 이 키 매칭의 예를 보려면 이 주제의 [예제 파일](#serverless-customizing-starter-pipelines-example-files) 섹션을 참조하세요.

1. **`metadata.json` 파일 만들기** - 파이프라인이 `metadata.json` 파일에 포함할 단계 수를 선언합니다. 단계의 수는 `sam pipeline init` 명령에 정보를 표시할 단계 수를 지정하거나, `--bootstrap` 옵션의 경우 인프라 리소스를 생성할 단계의 수를 지정합니다. 2단계로 구성된 파이프라인을 선언하는 예제 `metadata.json` 파일을 보려면 [metadata.json](https://github.com/aws/aws-sam-cli-pipeline-init-templates/blob/main/Jenkins/two-stage-pipeline-template/metadata.json)을 참조하세요.

## 예제 프로젝트
<a name="serverless-customizing-starter-pipelines-example-projects"></a>

다음은 Cookiecutter 템플릿, `questions.json` 파일, `metadata.json` 파일을 포함하는 예제 프로젝트입니다.
+ Jenkins 예제: [2단계 Jenkins 파이프라인 템플릿](https://github.com/aws/aws-sam-cli-pipeline-init-templates/tree/main/Jenkins/two-stage-pipeline-template)
+ CodePipeline 예제: [ 2단계 CodePipeline 파이프라인 템플릿](https://github.com/aws/aws-sam-cli-pipeline-init-templates/tree/main/AWS-CodePipeline/two-stage-pipeline-template)

## 예제 파일
<a name="serverless-customizing-starter-pipelines-example-files"></a>

다음 파일 세트는 `questions.json` 파일의 질문이 Cookiecutter 템플릿 파일의 항목과 어떻게 연관되는지를 보여줍니다. 참고로 이 예제는 전체 파일이 아닌 파일 스니펫입니다. 전체 파일의 예제를 보려면 이 주제의 앞부분에 나오는 [예제 프로젝트](#serverless-customizing-starter-pipelines-example-projects) 섹션을 참조하세요.

예 **`questions.json`**:

```
{
  "questions": [{
    "key": "intro",
    "question": "\nThis template configures a pipeline that deploys a serverless application to a testing and a production stage.\n",
    "kind": "info"
  }, {
    "key": "pipeline_user_jenkins_credential_id",
    "question": "What is the Jenkins credential ID (via Jenkins plugin \"aws-credentials\") for pipeline user access key?",
    "isRequired": true
  }, {
    "key": "sam_template",
    "question": "What is the template file path?",
    "default": "template.yaml"
  }, {
    ...
```

예 **`cookiecutter.json`**:

```
{
  "outputDir": "aws-sam-pipeline",
  "pipeline_user_jenkins_credential_id": "",
  "sam_template": "",
    ...
```

예 **`Jenkinsfile`**:

```
pipeline {
  agent any
  environment {
    PIPELINE_USER_CREDENTIAL_ID = '{{cookiecutter.pipeline_user_jenkins_credential_id}}'
    SAM_TEMPLATE = '{{cookiecutter.sam_template}}'
    ...
```

# AWS SAM 애플리케이션 배포 자동화
<a name="serverless-deploying-modify-pipeline"></a>

에서 AWS SAM 애플리케이션 배포를 자동화하는 AWS SAM방법은 사용 중인 CI/CD 시스템에 따라 다릅니다. 이러한 이유로이 섹션의 예제에서는 AWS SAM 빌드 컨테이너 이미지에서 서버리스 애플리케이션 빌드를 자동화하도록 다양한 CI/CD 시스템을 구성하는 방법을 보여줍니다. 이러한 빌드 컨테이너 이미지를 사용하면를 사용하여 서버리스 애플리케이션을 더 쉽게 빌드하고 패키징할 수 있습니다 AWS SAM CLI.

 AWS SAM 를 사용하여 서버리스 애플리케이션을 배포하는 기존 CI/CD 파이프라인의 절차는 사용 중인 CI/CD 시스템에 따라 약간 다릅니다.

다음 주제에서는 AWS SAM 빌드 컨테이너 이미지 내에 서버리스 애플리케이션을 빌드하도록 CI/CD 시스템을 구성하는 예제를 제공합니다.

**Topics**
+ [AWS CodePipeline 를 사용하여와 함께 배포 AWS SAM](deploying-using-codepipeline.md)
+ [Bitbucket Pipelines을 사용하여 로 배포 AWS SAM](deploying-using-bitbucket.md)
+ [Jenkins를 사용하여 로 배포 AWS SAM](deploying-using-jenkins.md)
+ [GitLab CI/CD를 사용하여 로 배포 AWS SAM](deploying-using-gitlab.md)
+ [GitHub 작업을 사용하여 로 배포 AWS SAM](deploying-using-github.md)

# AWS CodePipeline 를 사용하여와 함께 배포 AWS SAM
<a name="deploying-using-codepipeline"></a>

 AWS SAM 애플리케이션의 빌드 및 배포를 자동화하도록 [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 파이프라인을 구성하려면 CloudFormation 템플릿과 `buildspec.yml` 파일에 다음을 수행하는 줄이 포함되어야 합니다.

1. 사용 가능한 이미지에서 필요한 런타임이 포함된 빌드 컨테이너 이미지를 참조합니다. 다음 예제에서는 `public.ecr.aws/sam/build-nodejs20.x` 빌드 컨테이너 이미지를 사용합니다.

1. 필요한 AWS SAM 명령줄 인터페이스(CLI) 명령을 실행하도록 파이프라인 단계를 구성합니다. 다음 예제에서는 **sam build** 및 **sam deploy**(필수 옵션 포함) 두 AWS SAMCLI 명령을 실행합니다.

이 예제에서는를 사용하여 AWS SAM 템플릿 파일의 모든 함수와 계층을 선언했다고 가정합니다`runtime: nodejs20.x`.

**CloudFormation 템플릿 코드 조각:**

```
  CodeBuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
      Environment:
        ComputeType: BUILD_GENERAL1_SMALL
        Image: public.ecr.aws/sam/build-nodejs20.x
        Type: LINUX_CONTAINER
      ...
```

**`buildspec.yml` 코드 조각:**

```
version: 0.2
phases:
  build:
    commands:
      - sam build
      - sam deploy --no-confirm-changeset --no-fail-on-empty-changeset
```

다양한 런타임에 사용할 수 있는 Amazon Elastic Container Registry(Amazon ECR)빌드 컨테이너 이미지 목록은 [의 이미지 리포지토리 AWS SAM](serverless-image-repositories.md) 섹션을 참조하세요.

# Bitbucket Pipelines을 사용하여 로 배포 AWS SAM
<a name="deploying-using-bitbucket"></a>

 AWS SAM 애플리케이션의 빌드 및 배포를 자동화하도록 [Bitbucket Pipeline](https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/)을 구성하려면 `bitbucket-pipelines.yml` 파일에 다음을 수행하는 줄이 포함되어야 합니다.

1. 사용 가능한 이미지에서 필요한 런타임이 포함된 빌드 컨테이너 이미지를 참조합니다. 다음 예제에서는 `public.ecr.aws/sam/build-nodejs20.x` 빌드 컨테이너 이미지를 사용합니다.

1. 필요한 AWS SAM 명령줄 인터페이스(CLI) 명령을 실행하도록 파이프라인 단계를 구성합니다. 다음 예제에서는 **sam build** 및 **sam deploy**(필수 옵션 포함) 두 AWS SAMCLI 명령을 실행합니다.

이 예제에서는를 사용하여 AWS SAM 템플릿 파일의 모든 함수와 계층을 선언했다고 가정합니다`runtime: nodejs20.x`.

```
image: public.ecr.aws/sam/build-nodejs20.x

pipelines:
  branches:
    main: # branch name
      - step:
          name: Build and Package
          script:
            - sam build
            - sam deploy --no-confirm-changeset --no-fail-on-empty-changeset
```

다양한 런타임에 사용할 수 있는 Amazon Elastic Container Registry(Amazon ECR)빌드 컨테이너 이미지 목록은 [의 이미지 리포지토리 AWS SAM](serverless-image-repositories.md) 섹션을 참조하세요.

# Jenkins를 사용하여 로 배포 AWS SAM
<a name="deploying-using-jenkins"></a>

 AWS SAM 애플리케이션의 빌드 및 배포를 자동화하도록 [Jenkins](https://www.jenkins.io/) 파이프라인을 구성하려면에 다음을 수행하는 줄이 포함되어야 `Jenkinsfile` 합니다.

1. 사용 가능한 이미지에서 필요한 런타임이 포함된 빌드 컨테이너 이미지를 참조합니다. 다음 예제에서는 `public.ecr.aws/sam/build-nodejs20.x` 빌드 컨테이너 이미지를 사용합니다.

1. 필요한 AWS SAM 명령줄 인터페이스(CLI) 명령을 실행하도록 파이프라인 단계를 구성합니다. 다음 예제에서는 **sam build** 및 **sam deploy**(필수 옵션 포함) 두 AWS SAMCLI 명령을 실행합니다.

이 예제에서는를 사용하여 AWS SAM 템플릿 파일의 모든 함수와 계층을 선언했다고 가정합니다`runtime: nodejs20.x`.

```
pipeline {
    agent { docker { image 'public.ecr.aws/sam/build-nodejs20.x' } }
    stages {
        stage('build') {
            steps {
                sh 'sam build'
                sh 'sam deploy --no-confirm-changeset --no-fail-on-empty-changeset'
            }
        }
    }
}
```

다양한 런타임에 사용할 수 있는 Amazon Elastic Container Registry(Amazon ECR)빌드 컨테이너 이미지 목록은 [의 이미지 리포지토리 AWS SAM](serverless-image-repositories.md) 섹션을 참조하세요.

# GitLab CI/CD를 사용하여 로 배포 AWS SAM
<a name="deploying-using-gitlab"></a>

 AWS SAM 애플리케이션의 빌드 및 배포를 자동화하도록 [GitLab](https://about.gitlab.com) 파이프라인을 구성하려면 `gitlab-ci.yml` 파일에 다음을 수행하는 줄이 포함되어야 합니다.

1. 사용 가능한 이미지에서 필요한 런타임이 포함된 빌드 컨테이너 이미지를 참조합니다. 다음 예제에서는 `public.ecr.aws/sam/build-nodejs20.x` 빌드 컨테이너 이미지를 사용합니다.

1. 필요한 AWS SAM 명령줄 인터페이스(CLI) 명령을 실행하도록 파이프라인 단계를 구성합니다. 다음 예제에서는 **sam build** 및 **sam deploy**(필수 옵션 포함) 두 AWS SAMCLI 명령을 실행합니다.

이 예제에서는를 사용하여 AWS SAM 템플릿 파일의 모든 함수와 계층을 선언했다고 가정합니다`runtime: nodejs20.x`.

```
image: public.ecr.aws/sam/build-nodejs20.x
deploy:
  script:
    - sam build
    - sam deploy --no-confirm-changeset --no-fail-on-empty-changeset
```

다양한 런타임에 사용할 수 있는 Amazon Elastic Container Registry(Amazon ECR)빌드 컨테이너 이미지 목록은 [의 이미지 리포지토리 AWS SAM](serverless-image-repositories.md) 섹션을 참조하세요.

# GitHub 작업을 사용하여 로 배포 AWS SAM
<a name="deploying-using-github"></a>

 AWS SAM 애플리케이션의 빌드 및 배포를 자동화하도록 [GitHub](https://github.com/) 파이프라인을 구성하려면 먼저 호스트에 AWS SAM 명령줄 인터페이스(CLI)를 설치해야 합니다. GitHub 워크플로의 [GitHub Actions](https://github.com/features/actions)을 사용하면 이 설정에 도움이 될 수 있습니다.

다음 예제 GitHub 워크플로는 일련의 GitHub 작업을 사용하여 Ubuntu 호스트를 설정한 다음 명령을 실행 AWS SAM CLI하여 AWS SAM 애플리케이션을 빌드하고 배포합니다.

```
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v3
      - uses: aws-actions/setup-sam@v2
      - uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-2
      - run: sam build --use-container
      - run: sam deploy --no-confirm-changeset --no-fail-on-empty-changeset
```

다양한 런타임에 사용할 수 있는 Amazon Elastic Container Registry(Amazon ECR)빌드 컨테이너 이미지 목록은 [의 이미지 리포지토리 AWS SAM](serverless-image-repositories.md) 섹션을 참조하세요.

# AWS SAM 파이프라인에서 OIDC 인증을 사용하는 방법
<a name="deploying-with-oidc"></a>

AWS Serverless Application Model ()는 Bitbucket, GitHub Actions 및 GitLab 지속적 통합 및 지속적 전송(CI/CD) 플랫폼에 대한 OpenID Connect(OIDC) 사용자 인증을AWS SAM지원합니다. 이 지원을 통해 모든 플랫폼에서 인증된 CI/CD 사용자 계정을 사용하여 서버리스 애플리케이션 파이프라인을 관리할 수 있습니다. 그렇지 않으면 AWS SAM 파이프라인에 대한 액세스를 제어하기 위해 여러 AWS Identity and Access Management (IAM) 사용자를 생성하고 관리해야 합니다.

## AWS SAM 파이프라인을 사용하여 OIDC 설정
<a name="deploying-with-oidc-setup"></a>

`sam pipeline bootstrap` 구성 프로세스 중에 다음을 수행하여 AWS SAM 파이프라인으로 OIDC를 설정합니다.

1. ID 제공자를 선택하라는 메시지가 표시되면 **OIDC**를 선택합니다.

1. 다음으로 지원되는 OIDC 공급자를 선택합니다.

1. **https://**로 시작하는 OIDC 공급자 URL을 입력합니다.
**참고**  
AWS SAM 는 `AWS::IAM::OIDCProvider` 리소스 유형을 생성할 때이 URL을 참조합니다.

1. 그런 다음 프롬프트에 따라 선택한 플랫폼에 액세스하는 데 필요한 CI/CD 플랫폼 정보를 입력합니다. 이러한 세부 정보는 플랫폼마다 다르며 다음을 포함할 수 있습니다.
   + OIDC 클라이언트 ID.
   + 코드 리포지토리 이름 또는 범용 고유 식별자(UUID).
   + 리포지토리와 연관된 그룹 또는 조직 이름.
   + 코드 리포지토리가 속한 GitHub 조직.
   + GitHub 리포지토리 이름.
   + 배포가 이루어지는 브랜치.

1. AWS SAM 는 입력된 OIDC 구성의 요약을 표시합니다. 편집하려면 설정 번호를 입력하거나 Enter를 눌러 계속 진행합니다.

1. 입력한 OIDC 연결을 지원하는 데 필요한 리소스 생성을 확인하라는 메시지가 표시되면 Y를 눌러 계속 진행합니다.

AWS SAM 는 파이프라인 실행 역할을 수임하는 제공된 구성으로 `AWS::IAM::OIDCProvider` AWS CloudFormation 리소스를 생성합니다. 이 CloudFormation 리소스 유형에 대해 자세히 알아보려면 *AWS CloudFormation 사용 설명서*의 [AWS::IAM::OIDCProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-oidcprovider.html)를 참조하세요.

**참고**  
ID 제공업체(IdP) 리소스가 이미 AWS SAM 에 있는 경우는 새 리소스를 생성하는 대신 참조 AWS 계정합니다.

## 예제
<a name="deploying-with-oidc-setup-example"></a>

다음은 AWS SAM 파이프라인을 사용하여 OIDC를 설정하는 예제입니다.

```
Select a permissions provider:
    1 - IAM (default)
    2 - OpenID Connect (OIDC)
Choice (1, 2): 2
Select an OIDC provider:
    1 - GitHub Actions
    2 - GitLab
    3 - Bitbucket
Choice (1, 2, 3): 1
Enter the URL of the OIDC provider [https://token.actions.githubusercontent.com]:
Enter the OIDC client ID (sometimes called audience) [sts.amazonaws.com]:
Enter the GitHub organization that the code repository belongs to. If there is no organization enter your username instead: my-org
Enter GitHub repository name: testing
Enter the name of the branch that deployments will occur from [main]:

[3] Reference application build resources
Enter the pipeline execution role ARN if you have previously created one, or we will create one for you []:
Enter the CloudFormation execution role ARN if you have previously created one, or we will create one for you []:
Please enter the artifact bucket ARN for your Lambda function. If you do not have a bucket, we will create one for you []:
Does your application contain any IMAGE type Lambda functions? [y/N]:

[4] Summary
Below is the summary of the answers:
    1 - Account: 123456
    2 - Stage configuration name: dev
    3 - Region: us-east-1
    4 - OIDC identity provider URL: https://token.actions.githubusercontent.com
    5 - OIDC client ID: sts.amazonaws.com
    6 - GitHub organization: my-org
    7 - GitHub repository: testing
    8 - Deployment branch: main
    9 - Pipeline execution role: [to be created]
    10 - CloudFormation execution role: [to be created]
    11 - Artifacts bucket: [to be created]
    12 - ECR image repository: [skipped]
Press enter to confirm the values above, or select an item to edit the value:

This will create the following required resources for the 'dev' configuration:
    - IAM OIDC Identity Provider
    - Pipeline execution role
    - CloudFormation execution role
    - Artifact bucket
Should we proceed with the creation? [y/N]:
```

## 자세히 알아보기
<a name="deploying-with-oidc-setup-learn-more"></a>

 AWS SAM 파이프라인과 함께 OIDC를 사용하는 방법에 대한 자세한 내용은 섹션을 참조하세요[sam pipeline bootstrap](sam-cli-command-reference-sam-pipeline-bootstrap.md).