เบเปเบญเบเปเบฅเบตเปเบกเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ เบเปเปเบกเบนเบเบเปเบฒเบงเบชเบฒเบเบเบฑเบ 4 เบเบตเบเปเบญเบ. เบเบฑเปเบโเปเบเปโเบเบฑเปเบโเบกเบฒโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเบเปเบฒโเบฅเบฒเบโเบซเบผเบฒเบโเปเบเบโเบฅเปเบฒเบโเบเบทเปเบโเบเบฒเบ, เปเบกเปเบโเปเบเปโเบเบตเปโเบกเบตโเบเบฒเบโเบเบฐโเบฅเบดเบโเปเบฅเปเบง. เปเบเปโเบเบธเบโเบเบฑเปเบโเบเบตเปโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒ messed เปเบเบดเบ, เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเบฎเบฝเบโเบฎเบนเปโเบเบฒเบโเบชเบดเปเบโเบเบฒเบโเบขเปเบฒเบโเปเบซเบกเป. เปเบเบเบเปเบฒเบเบเบฐเบชเบปเบเบเบฒเบเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเปเบเปเบเบเบฑเบเบเบฒเบเบเบปเบเบฎเบฝเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเบชเบธเบเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบฎเบฝเบเบฎเบนเป.
เบเบปเบเบฎเบฝเบเบเบต 1: เบเบปเบเบชเบญเบเบเบฒเบเบเปเบฝเบเปเบเบเบเปเบญเบเบเบตเปเบเบฐเบเบณเปเบเปเบเบงเบเบกเบฑเบ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบฎเบฝเบเบฎเบนเปเบเบปเบเบฎเบฝเบเบเบตเปเบเบฑเบเบเบตเบซเบผเบฑเบเบเบฒเบเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบฅเบตเปเบกเบเบปเปเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ เบเปเปเบกเบนเบเบเปเบฒเบงเบชเบฒเบเบเบฑเบ. เบเปเบญเบเบเปเปเบเบทเปเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบเบเบซเบฑเบเปเบเปเบงเบฅเบฒเบเบฑเปเบ, เปเบเปเบเปเบญเบเบเบทเปเปเบเปเบขเปเบฒเบเปเบเปเบเบญเบเบงเปเบฒเบเปเบญเบเปเบเปเบเปเบฒเบชเบฑเปเบ Aws cloudformation update. เบเปเบฒโเบชเบฑเปเบโเบเบตเปโเบเบฝเบโเปเบเป rolls เบญเบญเบโเปเบกเปโเปเบเบโเปเบเบโเบเปเปโเบกเบตโเบเบฒเบโเบเบงเบโเบชเบญเบโเบเบฒเบโเบเปเบฝเบโเปเบเบโเบเบตเปโเบเบฐโเบเบทเบโเบเปเบฒโเปเบเปโ. เบเปเบญเบเบเปเปเบเบดเบเบงเปเบฒเบเปเบฒเบญเบฐเบเบดเบเบฒเบเปเบเปเปเบกเปเบเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเบเปเบฒเบเบเบงเบเบเบปเบเบชเบญเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบฑเบเบซเบกเบปเบเบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเปเบเปเบเบงเบเบกเบฑเบ.
เบซเบผเบฑเบเบเบฒเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบฅเบงเบเบตเป, เบเปเบญเบเปเบเปเบเปเบฝเบเบเบฑเบเบเบต deployment pipeline, เบเบฒเบเบเปเบฝเบเบเปเบฒเบชเบฑเปเบเบเบฑเบเบเบธเบเบเปเบงเบเบเปเบฒเบชเบฑเปเบ เบชเปเบฒเบ-เบเปเบฝเบ-เบเบฑเปเบ
# OPERATION is either "UPDATE" or "CREATE"
changeset_id=$(aws cloudformation create-change-set
--change-set-name "$CHANGE_SET_NAME"
--stack-name "$STACK_NAME"
--template-body "$TPL_PATH"
--change-set-type "$OPERATION"
--parameters "$PARAMETERS"
--output text
--query Id)
aws cloudformation wait
change-set-create-complete --change-set-name "$changeset_id"
เปเบกเบทเปเบญเบเบธเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบทเบเบชเปเบฒเบเบเบทเปเบ, เบกเบฑเบเบเปเปเบกเบตเบเบปเบเบเปเป stack เบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง. เบเปเปเปเบซเบกเบทเบญเบเบเบฑเบเบเปเบฒเบชเบฑเปเบเบเบฒเบเบเบฑเบเบเบธเบ, เบงเบดเบเบตเบเบฒเบ changeset เบเปเปเปเบเปเบเบฐเบเบธเปเบเปเบซเปเบกเบตเบเบฒเบเบเปเบฒเปเบเปเบเบปเบงเบเบดเบ. เปเบเบเบเบตเปเบเบฐ, เบกเบฑเบเบชเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบปเบเบเบงเบเบเบทเบเบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเปเบเป. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบเบฒเบเบเปเบฝเบเปเบเบเปเบเบเบฒเบเปเบเปเบเบญเบเบเบญเบ aws console. เปเบเปเบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบธเบเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบเบดเปเบเบเบงเบเบกเบฑเบเบขเบนเปเปเบ CLI:
# this command is presented only for demonstrational purposes.
# the real command should take pagination into account
aws cloudformation describe-change-set
--change-set-name "$changeset_id"
--query 'Changes[*].ResourceChange.{Action:Action,Resource:ResourceType,ResourceId:LogicalResourceId,ReplacementNeeded:Replacement}'
--output table
เบเปเบฒเบชเบฑเปเบเบเบตเปเบเบงเบเบเบฐเบฅเบดเบเบเบปเบเบเบฐเบฅเบดเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบเปเปเปเบเบเบตเป:
--------------------------------------------------------------------
| DescribeChangeSet |
+---------+--------------------+----------------------+------------+
| Action | ReplacementNeeded | Resource | ResourceId |
+---------+--------------------+----------------------+------------+
| Modify | True | AWS::ECS::Cluster | MyCluster |
| Replace| True | AWS::RDS::DBInstance| MyDB |
| Add | None | AWS::SNS::Topic | MyTopic |
+---------+--------------------+----------------------+------------+
เปเบญเบปเบฒเปเบเปเบชเปเปเบเบฑเบเบเบดเปเบชเบเบเปเปเบเบฒเบเบเปเบฝเบเปเบเบเบเปเบญเบเบเบตเปเบเบฒเบเบเบฐเบเบดเบเบฑเบเบขเบนเป เปเบเบเบเบตเป, เบฅเบปเบ เบซเบผเบทเบขเบนเปเปเบช เบเปเบญเบเบเบฒเบเบเบปเบเปเบเบ - เบเบทเบ. เปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเปเบเบฑเบเบญเบฑเบเบเบฐเบฅเบฒเบเบเบตเปเบชเบธเบเปเบฅเบฐเบกเบฑเบเบเบฐเบเปเบฒเปเบเบชเบนเปเบเบฒเบเบชเบนเบเปเบชเบเบเปเปเบกเบนเบ.
เปเบกเบทเปเบญเบเบฒเบเบเปเบฝเบเปเบเบเปเบเปเบเบทเบเบเบปเบเบเบงเบเบเบทเบ, เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบเป
aws cloudformation execute-change-set --change-set-name "$changeset_id"
operation_lowercase=$(echo "$OPERATION" | tr '[:upper:]' '[:lower:]')
aws cloudformation wait "stack-${operation_lowercase}-complete"
--stack-name "$STACK_NAME"
เบเบปเบเบฎเบฝเบเบเบต 2: เปเบเปเบเบฐเปเบเบเบฒเบ stack เปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเปเปเปเบซเปเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบญเบเบฅเบฑเบเบเบทเบเบเปเบฝเบเปเบเบ เบซเบผเบทเปเบญเบปเบฒเบญเบญเบ
เบเบฒเบเบเบฑเปเบเบเบฝเบเปเบเปเปเบเบดเปเบเบเบฒเบเบเปเบฝเบเปเบเบเปเบกเปเบเบเปเปเบเบฝเบเบเป. เบเบงเบเปเบฎเบปเบฒเบเบธเบเบเบปเบเปเบกเปเบเบกเบฐเบเบธเบเปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเบธเบเบเบปเบเปเบฎเบฑเบเบเบดเบเบเบฒเบ. เบซเบผเบฑเบโเบเบฒเบโเบเบตเปโเบเบงเบโเปเบฎเบปเบฒโเปเบเปโเปเบฅเบตเปเบกโเบเบปเปเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเบฒเบโเบเปเบฝเบโเปเบเบโเบเปเปโเบเบปเบ, เปเบเบทเปเบญเบโเบฎเปเบงเบกโเบเบตเบกโเบเบญเบโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเปโเบฎเบนเปโเบเบฑเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเบตเปโเปเบฎเบฑเบโเปเบซเปโเบกเบตโเบเบฒเบโเบเบฑเบโเบเบธเบโเบเบฒเบโเบเปเปโเบกเบนเบ. เบเปเปเบกเบตเบซเบเบฑเบเบเบตเปเบเปเปเบเบตเปเบเบตเบเบเบถเปเบเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเปเบเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบปเบเบชเบญเบ.
เปเบเบดเบเปเบกเปเบเบงเปเบฒเบชเบฐเบเบดเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบชเบฐเปเบเบเบฅเบฒเบเบเบทเปเบเบฒเบเบเปเบฝเบเปเบเบเปเบฅเบฐเบฎเปเบญเบเบเปเบเบฒเบเบขเบทเบเบขเบฑเบ, เบเบฒเบเบเปเบฝเบเปเบเบ Replace เปเบเปเบเบทเบเบเปเบฒเบกเปเบเปเบเบฒเบฐเบงเปเบฒเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฒเบเบเปเบฝเบเปเบเบเบกเบตเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบตเปเบกเบฑเบเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบซเบเปเบฒเบเป. เปเบฅเบฐเบเบฑเบเบเบฑเปเบเปเบเปเบเบตเปเปเบกเปเบเบเบฒเบเบเบฑเบเบเบธเบเบเบปเบเบเบฐเบเบดเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบปเบเบชเบญเบ, เบเปเปเปเบเปเปเบญเบปเบฒเปเบเปเบชเปเบซเบผเบฒเบเบเปเปเบเบฒเบเบเปเบฝเบเปเบเบ.
เบกเบตเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบตเปเบเปเบฒเบเบเปเปเปเบเบตเบเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเบปเบเปเบเบเบซเบผเบทเปเบญเบปเบฒเบญเบญเบ. เปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ statefull, เปเบเบฑเปเบ: เบเบฒเบเบเปเปเบกเบนเบ RDS เบซเบผเบทเบเบธเปเบก elasticsearch, เปเบฅเบฐเบญเบทเปเบเป. เบกเบฑเบเบเบฐเบเบตเบเปเบฒ aws เบเบฐเบเบฐเบเบดเปเบชเบเบเบฒเบเบเปเบฒเปเบเปเบเปเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเปเบฒเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบตเปเบเปเบฒเบฅเบฑเบเบเบฐเบเบดเบเบฑเบเปเบกเปเบเบเปเบญเบเบเบฒเบเบฅเบถเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฑเปเบเบเปเบฒเบง. เปเบเบเบเบต, เบฎเบนเบเปเบเบ cloudformation เบกเบตเบงเบดเบเบตเบเบฒเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป. เบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเบฐเปเบเบเบฒเบ stack, เปเบฅเบฐเบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบกเบฑเบเบขเบนเปเปเบ
STACK_NAME=$1
RESOURCE_ID=$2
POLICY_JSON=$(cat <<EOF
{
"Statement" : [{
"Effect" : "Deny",
"Action" : [
"Update:Replace",
"Update:Delete"
],
"Principal": "*",
"Resource" : "LogicalResourceId/$RESOURCE_ID"
}]
}
EOF
)
aws cloudformation set-stack-policy --stack-name "$STACK_NAME"
--stack-policy-body "$POLICY_JSON"
เบเบปเบเบฎเบฝเบเบเบต 3: เปเบเป UsePreviousValue เปเบกเบทเปเบญเบญเบฑเบเปเบเบ stack เบเบตเปเบกเบตเบเบฒเบฅเบฒเบกเบดเปเบเบตเบฅเบฑเบ
เปเบกเบทเปเบญเบเปเบฒเบเบชเปเบฒเบ RDS mysql entity, AWS เบฎเบฝเบเบฎเปเบญเบเปเบซเปเบเปเบฒเบเปเบซเป MasterUsername เปเบฅเบฐ MasterUserPassword. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเบเปเปเบฎเบฑเบเบชเบฒเบเบงเบฒเบกเบฅเบฑเบเปเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบเปเบฅเบฐเบเปเบญเบเบเปเบญเบเบเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบธเบเบขเปเบฒเบ, เบเปเบญเบเปเบเปเบเบฐเบเบดเบเบฑเบ "เบเบปเบเปเบเบเบตเปเบชเบฐเบซเบผเบฒเบ" เปเบเบดเปเบเบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเปเบเปเบเปเปเบกเบนเบเบเบฐเบเปเบฒเบเบปเบงเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบ s3, เปเบฅเบฐเบเปเบฒเบเปเปเบเบปเบเบเปเปเบกเบนเบเบเบฐเบเปเบฒเบเบปเบง, เบเปเปเบกเบนเบเบเบฐเบเปเบฒเบเบปเบงเปเบซเบกเปเบเบฐเบเบทเบเบชเปเบฒเบเบเบถเปเบ. เปเบเบฑเบเปเบงเปเปเบ s3.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเปเบกเบนเบเบเบฐเบเปเบฒเบเบปเบงเปเบซเบผเบปเปเบฒเบเบตเปเบเบฐเบเบทเบเบชเบปเปเบเบเปเบฒเบเปเบเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบเบซเบฒเบเปเบฒเบชเบฑเปเบเบชเปเบฒเบ - เบเบฒเบเบเปเบฝเบเปเบเบ - เบเบธเบ cloudformation. เปเบเบเบฐเบเบฐเบเบตเปเบเบฒเบเบเบปเบเบฅเบญเบเบเบฑเบเบชเบฐเบเบดเบ, เบกเบฑเบเปเบเบตเบเบเบถเปเบเบงเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ s3 เปเบเปเบชเบนเบเปเบชเบเปเบ, เปเบฅเบฐ "เบเบปเบเปเบเบเบตเปเบชเบฐเบซเบฅเบฒเบ" เบเบญเบเบเปเบญเบเปเบเปเบเบฐเบเบดเบเบฑเบเบกเบฑเบเปเบเบฑเบเบชเบฑเบเบเบฒเบเบเบตเปเบเบฐเบชเปเบฒเบเบเปเปเบกเบนเบเบเบฐเบเปเบฒเบเบปเบงเปเบซเบกเป.
เบเปเบฒเบเปเบญเบเปเบฅเบตเปเบกเปเบเป script เบเบตเปเปเบเบเบฒเบเบเบฐเบฅเบดเบเปเบฅเบฐเบเบฑเบเบซเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบตเบเบเบถเปเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เบกเบฑเบเบเบฐเบเบฑเบเบเบธเบ stack เบเปเบงเบเบเปเปเบกเบนเบเบเบฐเบเปเบฒเบเบปเบงเปเบซเบกเป. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเปเปเบกเบตเบซเบเบฑเบเบเบตเปเบเปเปเบเบตเบเบฐเปเบเบตเบเบเบถเปเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฐเบเบดเปเบกเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบฅเบฐเปเบฅเบตเปเบกเบเบปเปเบเปเบเปเบญเบตเบเบญเบฑเบเบซเบเบถเปเบ, เบชเบฐเบซเบเบญเบเบเปเปเบกเบนเบเบเบฐเบเปเบฒเบเบฝเบเปเบเปเบเบฑเปเบเบเบฝเบง - เปเบกเบทเปเบญเบชเปเบฒเบ stack. เปเบฅเบฐเบเปเปเบกเบฒ, เปเบกเบทเปเบญ stack เบเปเบญเบเบเบฒเบเบเบฒเบเบเบฑเบเบเบธเบ, เปเบเบเบเบตเปเบเบฐเบฅเบฐเบเบธเบเปเบฒเบฅเบฑเบเบเบญเบเบเบฒเบฅเบฒเบกเบดเปเบเบต, เบเปเบญเบเบเบฝเบเปเบเปเปเบเป UsePreviousValue=true:
aws cloudformation create-change-set
--change-set-name "$CHANGE_SET_NAME"
--stack-name "$STACK_NAME"
--template-body "$TPL_PATH"
--change-set-type "UPDATE"
--parameters "ParameterKey=MasterUserPassword,UsePreviousValue=true"
เบเบปเบเบฎเบฝเบเบเบต 4: เปเบเปเบเบฒเบเบเบณเบเบปเบเบเปเบฒ rollback
เบเบตเบกเบเบฒเบเบญเบทเปเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเปเบซเบเปเบฒเบเบตเป เบเปเปเบกเบนเบเบเปเบฒเบงเบชเบฒเบเบเบฑเบ, เปเบญเบตเปเบเบงเปเบฒ เบเบฒเบเบเบฑเปเบเบเปเบฒ rollback. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเปโเปเบเปโเบเบปเบโเปเบซเบฑเบโเบกเบฑเบโเบกเบฒโเบเปเบญเบโเปเบฅเบฐโเบขเปเบฒเบโเบงเปเบญเบโเปเบงโเปเบเปโเบฎเบฑเบโเบฎเบนเปโเบงเปเบฒโเบกเบฑเบโเบเบฐโเปเบฎเบฑเบโเปเบซเปโเบเบฒเบโเบเปเบฒโเปเบเป stacks เบเบญเบโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเบดเบโเปเบกเปเบโเปเบขเบฑเบ. เบเบญเบเบเบตเปเบเปเบญเบเปเบเปเบกเบฑเบเบเบธเบเบเบฑเปเบเบเบตเปเบเปเบญเบเปเบเปเบฅเบฐเบซเบฑเบเบเบญเบเบเปเบญเบเปเบชเป lambda เบซเบผเบท ECS เปเบเบเปเบเป cloudformation.
เบกเบฑเบเปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบ: เบเปเบฒเบเบฅเบฐเบเบธ เบเบฑเบเบเบฑเบเบเบธเบ CloudWatch เปเบเบเบฒเบฅเบฒเบกเบดเปเบเบต --rollback-configurationเปเบกเบทเปเบญเบเปเบฒเบเบชเปเบฒเบเบเบธเบเบเบฒเบเบเปเบฝเบเปเบเบ. เบเปเปเบกเบฒ, เปเบกเบทเปเบญเบเปเบฒเบเบเบฐเบเบดเบเบฑเบเบเบธเบเบเบญเบเบเบฒเบเบเปเบฝเบเปเบเบ, Aws เบเบดเบเบเบฒเบกเบชเบฑเบเบเบฒเบเปเบเบทเบญเบเบขเปเบฒเบเบซเบเปเบญเบเบซเบเบถเปเบเบเบฒเบเบต. เบกเบฑเบโเบเบฐโเบเบฑเบโเบเบทเบโเปเบโเบเปเบญเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเบธเบโเบเปเบฝเบโเบชเบฐโเบเบฒโเบเบฐโเปเบเบฑเบ ALARM เปเบโเบฅเบฐโเบซเบงเปเบฒเบโเปเบงโเบฅเบฒโเบเบตเป.
เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเปเบกเปเปเบเบ excerpt เบเปเปเบกเบนเบเบเปเบฒเบงเบชเบฒเบเบเบฑเบเปเบโเบเบตเปโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบชเปเบฒเบโ เปเบกเบเบเบธเบ cloudwatch, เปเบเบดเปเบเบเบดเบเบเบฒเบก metric เบเบนเปเปเบเปเบเบฅเบฒเบงเปเบเบฑเบเบเปเบฒเบเบงเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบเบฑเบเบเบถเบเบเบญเบเบเบฅเบฒเบง (metric เปเบกเปเบเบชเปเบฒเบเบเปเบฒเบ MetricFilter):
Resources:
# this metric tracks number of errors in the cloudwatch logs. In this
# particular case it's assumed logs are in json format and the error logs are
# identified by level "error". See FilterPattern
ErrorMetricFilter:
Type: AWS::Logs::MetricFilter
Properties:
LogGroupName: !Ref LogGroup
FilterPattern: !Sub '{$.level = "error"}'
MetricTransformations:
- MetricNamespace: !Sub "${AWS::StackName}-log-errors"
MetricName: Errors
MetricValue: 1
DefaultValue: 0
ErrorAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: !Sub "${AWS::StackName}-errors"
Namespace: !Sub "${AWS::StackName}-log-errors"
MetricName: Errors
Statistic: Maximum
ComparisonOperator: GreaterThanThreshold
Period: 1 # 1 minute
EvaluationPeriods: 1
Threshold: 0
TreatMissingData: notBreaching
ActionsEnabled: yes
เปเบเบเบฑเบเบเบธเบเบฑเบ เบเบธเบ เบชเบฒเบกเบฒเบเปเบเปเปเบเบฑเบ rollback เบเบฐเบเบธเปเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบดเบเบฑเบเบเปเบญเบเปเบเบทเปเบญเบเบกเบท:
ALARM_ARN=$1
ROLLBACK_TRIGGER=$(cat <<EOF
{
"RollbackTriggers": [
{
"Arn": "$ALARM_ARN",
"Type": "AWS::CloudWatch::Alarm"
}
],
"MonitoringTimeInMinutes": 1
}
EOF
)
aws cloudformation create-change-set
--change-set-name "$CHANGE_SET_NAME"
--stack-name "$STACK_NAME"
--template-body "$TPL_PATH"
--change-set-type "UPDATE"
--rollback-configuration "$ROLLBACK_TRIGGER"
เบเบปเบเบฎเบฝเบเบเบต 5: เปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเบฒเบเบเบณเปเบเปเปเบกเปเปเบเบเปเบงเบตเบเบฑเบเบซเบผเปเบฒเบชเบธเบ
เบกเบฑเบเบเปเบฒเบเบเบตเปเบเบฐเปเบเปเปเบกเปเปเบเบเบฎเบนเบเปเบเบ cloudformation เบฅเบธเปเบเบฅเปเบฒเบชเบธเบเบเบตเปเปเปเบญเบเบเบงเปเบฒ, เปเบเปเบเบฒเบเปเบฎเบฑเบเปเบเบเบเบฑเปเบเบเบฐเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบเบงเบฒเบกเปเบชเบเบซเบฒเบเบซเบผเบฒเบ. เบเบตเปเปเบเบตเบเบเบถเปเบเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบฑเปเบเบเบฝเบง: เบเบนเปเบเบฑเบเบเบฐเบเบฒเบเปเปเปเบเปเบเบธเบเบเบนเปเบเบฒเบเบเปเบฝเบเปเบเบเบซเบผเปเบฒเบชเบธเบเบเบฒเบ Git เปเบฅเบฐเบเปเบฒเปเบเป stack เบฎเบธเปเบเบเบตเปเบเปเบฒเบเบกเบฒเปเบเบเบเปเปเบฎเบนเปเบเบปเบง. เบญเบฑเบเบเบตเปเปเบฎเบฑเบเปเบซเปเบเบฒเบเบขเบธเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบตเปเปเบเป stack เบเบตเป.
เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบทเบเบฒเบเปเบเบตเปเบกเบเบฒเบเบเบงเบเบชเบญเบเปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบชเบฒเบเบฒเปเบกเปเบเบเบฑเบเบชเบฐเปเบซเบกเบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบกเบฑเบเบเบฐเบเบต (เบชเบปเบกเบกเบธเบเบงเปเบฒ git เปเบกเปเบเปเบเบทเปเบญเบเบกเบทเบเบงเบเบเบธเบกเบชเบฐเบเบฑเบเบเบญเบเบเปเบฒเบ):
git fetch
HEADHASH=$(git rev-parse HEAD)
UPSTREAMHASH=$(git rev-parse master@{upstream})
if [[ "$HEADHASH" != "$UPSTREAMHASH" ]] ; then
echo "Branch is not up to date with origin. Aborting"
exit 1
fi
เบเบปเบเบฎเบฝเบเบเบต 6: เบขเปเบฒเบเบฐเบเบดเบเบฅเปเปเปเปเป
เบกเบฑเบโเบญเบฒเบโเบเบฐโเปเบเบดเปเบโเบเบทโเบงเปเบฒโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฑเบโ เบเปเปเบกเบนเบเบเปเบฒเบงเบชเบฒเบเบเบฑเบ - เบกเบฑเบเบเปเบฒเบ. เบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบชเบฐเบเบดเบ bash เบซเบผเบฒเบเปเบญเบฑเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบเปเบฒเบชเบฑเปเบ aws cli.
เปเบกเบทเปเบญ 4 เบเบตเบเปเบญเบเบเปเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ scripts เบเปเบฒเบเปเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเปเบฒเบชเบฑเปเบ aw cloudformation create-stack. เบเปเปเบเบปเบ script เปเบกเปเบเบเปเปเบเปเบฒเบเบเบฒเบเบญเบตเบเบเปเปเปเบ. เปเบเปเบฅเบฐเบเบปเบเบฎเบฝเบเบเบตเปเบเบญเบเบเบญเบเปเบเปเปเบฎเบฑเบเปเบซเป script เบกเบตเบเบงเบฒเบกเบเบฑเบเบเปเบญเบเบซเบผเบฒเบเบเบถเปเบ. เบกเบฑเบเบเปเปเบเบฝเบเปเบเปเบกเบตเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบ, เปเบเปเบเบฑเบเปเบเบฑเบกเปเบเบเปเบงเบเปเบกเบเปเบกเป.
เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเบฐเปเบเบ IT เบเบฐเบซเบเบฒเบเบเปเบญเบ. เบเบฐเบชเบปเบเบเบฒเบเปเบเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒเปเบเปเบฅเบฐเบเบตเบกเบกเบตเบงเบดเบเบตเบเบฒเบเบเบญเบเบเบปเบเปเบญเบเปเบเบเบฒเบเบเปเบฒเปเบเป stackformation cloud. เปเบฅเบฐเบเบฑเปเบเบเปเปเบเปเปเบเบต. เบกเบฑเบเบเบฐเบเบตเบเบงเปเบฒเบเปเบฒเบเบธเบเบเบปเบเปเบเปเบงเบดเบเบตเบเบฝเบงเบเบฑเบ. เปเบเบเบเบต, เบกเบตเบซเบผเบฒเบเปเบเบทเปเบญเบเบกเบทเบเบตเปเบกเบตเบขเบนเปเปเบเบทเปเบญเบเปเบงเบเปเบซเปเบเปเบฒเบเบเบณเปเบเป เปเบฅเบฐเบเบณเบเบปเบเบเปเบฒ stackformation cloud.
เบเบปเบเบฎเบฝเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบซเบผเบตเบเปเบงเบฑเปเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com