I timata ahau ki te mahi tahi hanga kapua 4 tau ki muri. Mai i tera wa kua pakaruhia e au te maha o nga hanganga, tae noa ki nga mea kua mahia. Engari i nga wa katoa ka raru ahau i tetahi mea, ka ako au i tetahi mea hou. Na roto i tenei wheako, ka whakapuaki ahau i etahi o nga akoranga tino nui i akohia e au.
Akoranga 1: Whakamātauhia nga huringa i mua i te tohatoha
I ako ahau i tenei akoranga i muri tata mai i taku tiimata ki te mahi hanga kapua. Kaore au e mahara ki nga mea i pakaruhia e au i tera wa, engari ka tino mahara ahau i whakamahia e au te whakahau aws whakahōunga kapua. Ko tenei whakahau ka huri noa i te tauira kaore he whakamanatanga o nga huringa ka tukuna. Ki taku whakaaro kaore e hiahiatia he whakamaarama mo te aha me whakamatau koe i nga huringa katoa i mua i te tuku.
I muri i tenei korenga, ka huri tonu ahau te raina hiko, whakakapi i te whakahau whakahou ki te whakahau hanga-huri-huinga
# 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"
Ina hangahia he huinga huringa, kare he paanga ki te puranga o naianei. Kaore i rite ki te whakahau whakahou, kaore te huarahi huringa e whakaohooho i te tukunga. Engari, ka hangaia he rarangi o nga huringa ka taea e koe te arotake i mua i te tuku. Ka taea e koe te tiro i nga huringa o te atanga papatohu aws. Engari ki te hiahia koe ki te whakaaunoa i nga mea katoa ka taea e koe, tirohia i roto i te 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
Ko tenei whakahau me whakaputa he putanga rite ki enei e whai ake nei:
--------------------------------------------------------------------
| DescribeChangeSet |
+---------+--------------------+----------------------+------------+
| Action | ReplacementNeeded | Resource | ResourceId |
+---------+--------------------+----------------------+------------+
| Modify | True | AWS::ECS::Cluster | MyCluster |
| Replace| True | AWS::RDS::DBInstance| MyDB |
| Add | None | AWS::SNS::Topic | MyTopic |
+---------+--------------------+----------------------+------------+
Kia aro nui ki nga huringa kei hea te Mahi Whakakapi, Mukua kei hea ranei Me Whakakapi - Tika. Koinei nga huringa tino kino, ka ngaro nga korero.
Ina arotakehia nga huringa, ka taea te tuku
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"
Akoranga 2: Whakamahia te kaupapa here taapu hei aukati i te whakakapi, te tango ranei i nga rauemi mana
I etahi wa kaore e ranea te maataki noa i nga huringa. He tangata katoa tatou ka he katoa tatou. I muri tata mai i te wa i timata ai matou ki te whakamahi i nga huringa, kare i mohio taku hoa mahi i mahia he tukunga i puta he whakahounga raraunga. Kaore he mea kino i tupu na te mea he taiao whakamatautau.
Ahakoa i whakaatu a maatau tuhinga i te rarangi o nga huringa me te tono kia whakamanahia, i pekehia te huringa Whakakapi na te mea he nui rawa te rarangi o nga huringa kaore i uru ki te mata. Na i te mea he whakahou noa tenei i roto i te taiao whakamatautau, kaore i tino aro ki nga huringa.
He rauemi kaore koe e hiahia ki te whakakapi, ki te tango ranei. He ratonga mana tonu enei, penei i te tauira raraunga RDS, te roopu elasticsearch ranei, me etahi atu. He pai ki te kore a aws e whakaae ki te tuku mai mena ka hiahia te mahi ki te whakakore i taua rauemi. Waimarie, he huarahi hanga-i roto i te cloudformation hei mahi i tenei. Ka kiia tenei ko te kaupapa here taapu, a ka taea e koe te panui atu mo tera i roto
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"
Akoranga 3: Whakamahia te UsePreviousValue ina whakahōuhia he tāpae me nga tawhā ngaro
Ina waihangahia e koe he hinonga RDS mysql, ka hiahia a AWS ki a koe ki te whakarato i te Kaiwhakamahi Kaiwhakamahi me te MasterUserPassword. I te mea he pai ake kia kaua e pupuri i nga mea ngaro i roto i te waehere puna me taku hiahia ki te whakaaunoa i nga mea katoa, ka whakatinanahia e ahau he "whakaaro mohio" i mua i te tukunga ka whiwhihia nga tohu mai i te s3, a, ki te kore e kitea nga tohu, ka hangaia nga tohu tohu hou ka rongoa i roto i te s3.
Ko enei tohu ka tukuna hei tawhā ki te whakahau hanga-huri-whakaritenga kapua. I a koe e whakamatautau ana i te tuhinga, kua ngaro te hononga ki te s3, a ko taku "whakaaro mohio" he tohu hei whakaputa i nga tohu hou.
Mena ka timata ahau ki te whakamahi i tenei tuhinga ki te whakaputa ka pa ano te raru hononga, ka whakahouhia te puranga me nga tohu hou. I tenei keehi, kaore he mea kino e pa. Heoi, i whakarerea e ahau tenei huarahi, ka tiimata ki te whakamahi i tetahi atu, me te tuku tohu tohu kotahi anake - i te wa e hanga ana te puranga. A, i muri mai, ka hiahia te puranga ki te whakahou, hei utu mo te tohu i te uara ngaro o te tawhā, ka whakamahi noa ahau UsePreviousValue=pono:
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"
Akoranga 4: Whakamahia te whirihoranga whakamuri
Ko tetahi atu roopu i mahi tahi ahau i whakamahi i te mahi hanga kapua, ka karanga whirihoranga whakamuri. Kare ano au i kite i mua, ka mohio wawe au ka pai ake te whakamaarama i aku taapu. Inaianei ka whakamahia e au i nga wa katoa ka tukuna e au taku waehere ki te lambda, ki te ECS ranei ma te whakamahi kapua.
Me pehea te mahi: ka tohua e koe Pūoho CloudWatch i roto i te tawhā --rollback-configurationina hanga e koe he huinga huringa. I muri mai, ka mahia e koe he huinga huringa, ka aro turukihia e aws te whakaoho mo te kotahi meneti neke atu. Ka huri whakamuri te tukunga mena ka huri te whakaoho ki te ALARM i tenei wa.
Kei raro nei he tauira o te waahanga tauira hanga kapuai roto i ahau te hanga whakaoho kapua, e whai ana i te inenga kaiwhakamahi kapua ko te maha o nga hapa i roto i nga raarangi kapua (he mea hanga te ine ma te 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
I teie nei whakaoho ka taea te whakamahi hei Tuhinga o mua keu ina mahi pouaka taputapu:
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"
Akoranga 5: Me whakarite kia horahia e koe te putanga hou o te tauira
He mea ngawari ki te whakatakoto i tetahi putanga iti ake i te hou o te tauira cloudformation, engari ma te pera ka nui te kino. I pa mai tenei ki a matou i tetahi wa: kaore tetahi kaiwhakawhanake i pana i nga huringa hou mai i a Git me te kore mohio i tukuna he putanga o mua o te puranga. Na tenei ka puta te wa mo te tono i whakamahi i tenei puranga.
He mea ngawari ki te taapiri i te haki ki te kite mena kei te noho hou te peka i mua i te whakauru ki tera ka pai (mehemea ko te git to taputapu mana putanga):
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
Akoranga 6: Kaua e hanga ano te wira
Ka rite pea ki te tohatoha me hanga kapua - he ngawari. Kei te hiahia koe ki te paihere o nga tuhinga bash e whakahaere ana i nga whakahau aws cli.
4 tau ki muri ka tiimata ahau me nga tuhinga ngawari e kiia nei ko te aws cloudformation hanga-tapae whakahau. Kaore i roa kua kore e ngawari te tuhinga. Ko ia akoranga i akohia ka nui ake te uaua o te tuhinga. Ehara i te mea uaua anake, engari ki tonu i nga pepeke.
I tenei wa kei te mahi ahau i tetahi tari IT iti. Kua whakaatuhia e nga wheako kei ia roopu tana ake huarahi ki te tuku i nga puranga cloudformation. A he kino tena. He pai ake mena ka rite te huarahi o te katoa. Waimarie, he maha nga taputapu e waatea ana hei awhina i a koe ki te whakatakoto me te whirihora i nga puranga cloudformation.
Ko enei akoranga ka awhina koe ki te karo i nga hapa.
Source: will.com