CloudFormation에서 RDS를 업데이트할 때의 주의
7412 단어 RDSCloudFormationAWS
배경
CloudFormation
에서 관리하는 MariaDB
인스턴스의 공개 액세스를 변경하고 싶었습니다.
스택 파일 (json)에서 업데이트하면 다음 오류로 빠졌습니다.
CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename (DBインスタンス名) and update the stack again.
공식 문서을 읽고 보면
InstanceIdentifier
중요
이름을 지정하면 이 리소스를 대체해야 하는 업데이트를 수행할 수 없습니다. 중단이 필요하지 않거나 일정한 중단이 필요한 업데이트라면 수행할 수 있습니다. 리소스를 교체해야 하는 경우 새 이름을 지정합니다.
CloudFormation
에서 DBInstanceのInstanceIdentifier
(DB 인스턴스 이름)을 설정하면 대체 할 수 없습니다. . . .
그럼 반대로 이름을 지정하지 않으면 어떻게 될까라고 하면
DB 인스턴스의 이름. 이름을 지정하면 AWS CloudFormation은 이름을 소문자로 변환합니다. 이름을 지정하지 않으면 AWS CloudFormation은 고유한 물리적 ID를 생성하고 ID를 DB 인스턴스 이름으로 사용합니다. 자세한 내용은 이름 유형을 참조하십시오.
AWS에서 ID를 생성해 DB 인스턴스 이름이 되지만, 인간에게 알기 쉬운 이름을 지정할 수 없기 때문에 관리는 어렵게 될 것 같습니다.
이름을 지정할 때는 어떻게 하는가?
예를 들면 다음과 같은 기존의 스택 파일(json)로 DB의 이름을 지정하고 있는 경우로, 그 이름을 재이용하기 위해서는
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "rds stack",
"Resources" : {
"DevRDSDBInstance" : {
"Type" : "AWS::RDS::DBInstance",
"Properties" : {
"DBInstanceIdentifier":"sample-instance01",
"DBSubnetGroupName" : "sample-rds-subnet-group",
"AvailabilityZone" : "ap-northeast-1a",
"AllocatedStorage" : "50",
"DBInstanceClass" : "db.t2.medium",
"PubliclyAccessible": "true",
"Engine" : "MariaDB",
"DBParameterGroupName": "sample-rds-parameter-group",
"MasterUsername" : "sample-master-user",
"MasterUserPassword" : "sample-master-password",
"DBSnapshotIdentifier" :"snapshot-sample-instance01",
"Tags" : [ { "Key" : "Name", "Value" : "sample-Instance01-rds01" } ],
"VPCSecurityGroups": "sg-sample"
}
}
}
}
1. 업데이트할 DB 인스턴스의 스냅샷을 찍습니다.
위의 스택 파일에서 예제 snapshot-sample-instance01
2. 다른 이름으로 변경하고 CloudFormation을 반영
CloudFormation
파일 (json)의 DBInstanceIdentifier
에 지정된 이름sample-instance02
등으로 변경하고 DBSnapshotIdentifier
를 1로 얻은 스탭의 이름으로 만듭니다.
스택을 업데이트하면 AWS에서 생성한 인스턴스 이름의 DB 인스턴스가 생성되고 원래 설정된 sample-instance01
DB 인스턴스가 삭제됩니다.
3. 원래 이름으로 돌아가서 CloudFormation을 반영
다시 CloudFormation json 파일에 DBInstanceIdentifier
를 추가하고 이름 (sample-instance01
)을 지정합니다.
이름이 지정된 DB 인스턴스가 생성되고 2로 생성된 DB 인스턴스가 삭제됨
라고 하는 작업이 되어, 꽤 귀찮습니다. . . .
aws의 콘솔 화면에서 보면 공개 액세스 변경은 특히 가동 중지 시간없이 업데이트됩니다.
공용 액세스 및 옵션 그룹 변경과 같이 일반적으로 CloudFormation
재시작이 발생할 수 있는 변경 사항을 수행하면 DB 인스턴스를 교체해야 하는 작업이 엄청납니다.
끝에
이러한 사정을 고려하면 DB 인스턴스의 이름은 특별히 설정하지 않고, DB 인스턴스에 DNS를 설정하여 RDS의 엔드포인트가 바뀌어도 관리하는 것이 즐거울 것 같네요.
Reference
이 문제에 관하여(CloudFormation에서 RDS를 업데이트할 때의 주의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taketora/items/b1099dee6ee9d1f49a43
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename (DBインスタンス名) and update the stack again.
예를 들면 다음과 같은 기존의 스택 파일(json)로 DB의 이름을 지정하고 있는 경우로, 그 이름을 재이용하기 위해서는
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "rds stack",
"Resources" : {
"DevRDSDBInstance" : {
"Type" : "AWS::RDS::DBInstance",
"Properties" : {
"DBInstanceIdentifier":"sample-instance01",
"DBSubnetGroupName" : "sample-rds-subnet-group",
"AvailabilityZone" : "ap-northeast-1a",
"AllocatedStorage" : "50",
"DBInstanceClass" : "db.t2.medium",
"PubliclyAccessible": "true",
"Engine" : "MariaDB",
"DBParameterGroupName": "sample-rds-parameter-group",
"MasterUsername" : "sample-master-user",
"MasterUserPassword" : "sample-master-password",
"DBSnapshotIdentifier" :"snapshot-sample-instance01",
"Tags" : [ { "Key" : "Name", "Value" : "sample-Instance01-rds01" } ],
"VPCSecurityGroups": "sg-sample"
}
}
}
}
1. 업데이트할 DB 인스턴스의 스냅샷을 찍습니다.
위의 스택 파일에서 예제
snapshot-sample-instance01
2. 다른 이름으로 변경하고 CloudFormation을 반영
CloudFormation
파일 (json)의 DBInstanceIdentifier
에 지정된 이름sample-instance02
등으로 변경하고 DBSnapshotIdentifier
를 1로 얻은 스탭의 이름으로 만듭니다.스택을 업데이트하면 AWS에서 생성한 인스턴스 이름의 DB 인스턴스가 생성되고 원래 설정된
sample-instance01
DB 인스턴스가 삭제됩니다.3. 원래 이름으로 돌아가서 CloudFormation을 반영
다시 CloudFormation json 파일에
DBInstanceIdentifier
를 추가하고 이름 (sample-instance01
)을 지정합니다.이름이 지정된 DB 인스턴스가 생성되고 2로 생성된 DB 인스턴스가 삭제됨
라고 하는 작업이 되어, 꽤 귀찮습니다. . . .
aws의 콘솔 화면에서 보면 공개 액세스 변경은 특히 가동 중지 시간없이 업데이트됩니다.
공용 액세스 및 옵션 그룹 변경과 같이 일반적으로
CloudFormation
재시작이 발생할 수 있는 변경 사항을 수행하면 DB 인스턴스를 교체해야 하는 작업이 엄청납니다.끝에
이러한 사정을 고려하면 DB 인스턴스의 이름은 특별히 설정하지 않고, DB 인스턴스에 DNS를 설정하여 RDS의 엔드포인트가 바뀌어도 관리하는 것이 즐거울 것 같네요.
Reference
이 문제에 관하여(CloudFormation에서 RDS를 업데이트할 때의 주의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taketora/items/b1099dee6ee9d1f49a43텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)