どうしても手動がないと落ち着かない人たちのために、CI/CDへSORACOM LTE-M Buttonから承認をできるようにしました。
ぜひ「承認実行!」と叫んで押していただきたい。
デモ
#あのボタン でCodePipelineの承認と却下 pic.twitter.com/I72SNe5G17
— T.A.C. (@TAC_yacht) 2019年6月19日
構成
今回は練習もかねてCodeStarでCodeシリーズを初期化しています。

※Manual approvalは文中で追加します。
Lambdaの作成
IAMロール
通常のIAMロールのほかPipelineを操作するので以下を追加してください
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "codepipeline:GetPipelineState",
            "Resource": "arn:aws:codepipeline:【リージョン】:【アカウント】:【パイプライン名】"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "codepipeline:PutApprovalResult",
            "Resource": "arn:aws:codepipeline:【リージョン】:【アカウント】:【パイプライン名】/【ステージ名】/【アクション名】"
        }
    ]
}
※パイプライン/ステージ/アクションは名前です。IDの類いではありませんので注意
Lambdaのコード
こちらのgistからコピペしてください。
ダブルクリックに承認、それ以外に否認を割り当てています。
Pipelineへ承認の追加
- 「ステージを追加する」を押下
 - IAMで設定した名前に合うステージ名を付ける
 - 「アクショングループを追加する」を押下
 - IAMで設定した名前に合うアクション名を付ける
 - アクションプロバイダー「Manual approval」を選択
 - 「完了」を押下
 - 「保存する」を押下
 
※本説明はCodePipelineがCodeStar等であらかじめ承認以外ができている前提です。
ボタンの設定
プレイスメントの属性として以下を定義してください
| 属性の名前 | 値 | 
|---|---|
| actionName | 【パイプライン名】 | 
| pipelineName | 【ステージ名】 | 
| stageName | 【アクション名】 | 
参考文献
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/approvals-approve-or-reject.html#approvals-approve-or-reject-cli
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/codepipeline.html
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/iam-access-control-identity-based.html