

새로운 *CloudFormation 템플릿 참조 안내서*입니다. 북마크와 링크를 업데이트하세요. CloudFormation을 시작하는 데 도움이 필요한 경우 [AWS CloudFormation 사용 설명서](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)를 참조하세요.

# `AWS::SecretsManager` 변환
<a name="transform-aws-secretsmanager"></a>

이 주제에서는 `AWS::SecretsManager` 변환 및 [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html) 리소스 유형을 사용하여 보안 암호 교체를 수행할 Lambda 함수를 지정하는 방법을 설명합니다.

`AWS::SecretsManager` 변환은 스택 템플릿에서 참조할 때 변경 세트를 사용하여 스택을 생성하거나 업데이트하는 경우 보안 암호 교체를 위한 Lambda 함수를 자동으로 생성하는 CloudFormation 매크로입니다. Lambda 함수는 처리된 템플릿의 중첩 스택에 배치됩니다. [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html) 리소스의 [RotationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-rotationtype) 속성 값을 기반으로 [AWS Secrets Manager 교체 Lambda 함수](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas) 리포지토리에서 함수 템플릿을 사용합니다.

## 사용법
<a name="aws-secretsmanager-usage"></a>

`AWS::SecretsManager` 변환을 사용하려면 CloudFormation 템플릿의 최상위 수준에서 이를 선언해야 합니다. 다른 템플릿 섹션에 포함된 변환으로 `AWS::SecretsManager`을 사용할 수 없습니다.

선언에서는 리터럴 문자열 `AWS::SecretsManager-2020-07-23` 또는 `AWS::SecretsManager-2024-09-16`을 해당 값으로 사용해야 합니다. 파라미터나 함수를 사용하여 변환 값을 지정할 수 없습니다.

### 구문
<a name="aws-secretsmanager-syntax"></a>

CloudFormation 템플릿에서 이 변환을 선언하려면 다음 구문을 사용합니다.

#### JSON
<a name="aws-secretsmanager-syntax.json"></a>

```
{
  "Transform":"AWS::SecretsManager-{{2020-07-23}}",
  "Resources":{
    {{...}}
  }
}
```

#### YAML
<a name="aws-secretsmanager-syntax.yaml"></a>

```
Transform: AWS::SecretsManager-{{2020-07-23}}
Resources:
  {{...}}
```

`AWS::SecretsManager` 변환은 추가 파라미터가 없는 독립 실행형 선언입니다. 대신 스택 템플릿에서 [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html) 리소스의 [HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html) 속성을 구성합니다. [HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html) 속성은 Lambda 함수를 지정하여 보안 암호 교체를 수행합니다.

## `AWS::SecretsManager-2024-09-16`의 새로운 기능
<a name="aws-secretsmanager-new-version"></a>

최신 버전의 `AWS::SecretsManager` 변환(`AWS::SecretsManager-2024-09-16`)에는 다음과 같은 개선 사항이 도입되었습니다.
+ **자동 Lambda 업그레이드** - CloudFormation 스택을 업데이트하면 이제 Lambda 함수가 런타임 구성 및 내부 종속 항목을 자동으로 업데이트합니다. 이를 통해 Secrets Manager에서 보안 암호 교체를 관리하는 가장 안전하고 신뢰할 수 있는 버전의 코드를 사용할 수 있습니다.
+ **추가 속성 지원** - 새 변환은 `DependsOn` 속성을 포함하여 `HostedRotationLambda` 속성과 함께 사용할 때 `AWS::SecretsManager::RotationSchedule` 리소스 유형에 대한 추가 리소스 속성을 지원합니다.
**참고**  
두 버전 모두 `DeletionPolicy` 및 `UpdateReplacePolicy` 속성을 지원합니다.

`AWS::SecretsManager` 변환의 이 새 버전에 대해 자세히 알아보려면 AWS 보안 블로그의 [Introducing an enhanced version of the AWS Secrets Manager transform: AWS::SecretsManager-2024-09-16](https://aws.amazon.com/blogs/security/introducing-an-enhanced-version-of-the-aws-secrets-manager-transform-awssecretsmanager-2024-09-16/)를 참조하세요.

## 예제
<a name="aws-secretsmanager-examples"></a>

다음 예제에서는 템플릿에서 `AWS::SecretsManager` 변환(`AWS::SecretsManager-2024-09-16`) 및 [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html) 리소스를 사용하는 방법을 보여줍니다. 이 예제에서 CloudFormation은 MySQL 단일 사용자 보안 암호 교체를 위한 Lambda 함수를 자동으로 생성합니다.

보안 암호는 매일 자정(UTC)에 자동으로 교체되도록 설정됩니다. 교체 프로세스를 완료하는 데 최대 2시간이 걸릴 수 있습니다. 교체 일정을 업데이트해도 즉시 교체가 시작되지 않습니다.

### JSON
<a name="aws-secretsmanager-example.json"></a>

```
{
  "AWSTemplateFormatVersion":"2010-09-09",
  "Transform":"AWS::SecretsManager-2024-09-16",
  "Resources":{

  {{...}}

    "{{MySecretRotationSchedule}}":{
      "Type":"AWS::SecretsManager::RotationSchedule",
      "DependsOn":"{{logical name of AWS::SecretsManager::SecretTargetAttachment resource}}",
      "Properties":{
        "SecretId":{
          "Ref":"{{logical name of AWS::SecretsManager::Secret resource}}"
        },
        "HostedRotationLambda":{
          "RotationType":"MySQLSingleUser",
          "RotationLambdaName":"{{name of Lambda function to be created}}",
          "VpcSecurityGroupIds":{
            "Fn::GetAtt":[
              "{{logical name of AWS::EC2::SecurityGroup resource}}",
              "GroupId"
            ]
          },
          "VpcSubnetIds":{
            "Fn::Join":[
              ",",
              [
                {
                  "Ref":"{{logical name of primary subnet}}"
                },
                {
                  "Ref":"{{logical name of secondary subnet}}"
                }
              ]
            ]
          }
        },
        "RotationRules":{
          "ScheduleExpression":"cron(0 0 * * ? *)",
          "Duration":"2h"
        },
        "RotateImmediatelyOnUpdate":false
      }
    }
  }
}
```

### YAML
<a name="aws-secretsmanager-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::SecretsManager-2024-09-16
Resources:

  {{...}}

  {{MySecretRotationSchedule}}:
    Type: AWS::SecretsManager::RotationSchedule
    DependsOn: {{logical name of AWS::SecretsManager::SecretTargetAttachment resource}}
    Properties:
      SecretId: !Ref {{logical name of AWS::SecretsManager::Secret resource}}
      HostedRotationLambda:
        RotationType: MySQLSingleUser
        RotationLambdaName: {{name of Lambda function to be created}}
        VpcSecurityGroupIds: !GetAtt {{logical name of AWS::EC2::SecurityGroup resource}}.GroupId
        VpcSubnetIds:
          Fn::Join:
          - ","
          - - Ref: {{logical name of primary subnet}}
            - Ref: {{logical name of secondary subnet}}
      RotationRules:
        ScheduleExpression: cron(0 0 * * ? *)
        Duration: 2h
      RotateImmediatelyOnUpdate: false
```

## 관련 리소스
<a name="aws-secretsmanager-related-resources"></a>

보안 암호 교체를 설정하는 데 사용할 수 있는 전체 CloudFormation 템플릿 예제는 `AWS::SecretsManager::RotationSchedule` 리소스의 [예제](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html#aws-resource-secretsmanager-rotationschedule--examples) 섹션을 참조하세요.

매크로 사용에 대한 일반적인 정보는 *AWS CloudFormation 사용 설명서*의 [템플릿 매크로를 사용하여 CloudFormation 템플릿에서 사용자 지정 처리 수행](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html)을 참조하세요.