たいがーのインターンシップ体験記【23日目】 ~初めてのSlack bot~ | 株式会社サーバーワークス's Blog
今朝割った卵が双子でテンションが上がりました、たいがーです。レアな気がして、テンション上がりますよね。あれ、私だけですか...?Slack botを作ってみることに。前回までの課題で、Cloud A...
https://www.wantedly.com/companies/serverworks/post_articles/171707
先日、ようやく私のパソコンにもGit環境を整えました、たいがーです。
インターン中に使っているパソコンはWindows、私のパソコンはMacなので、少しやり方に差がありましたが、設定することが出来ました…!複数リポジトリに対応できるようにしたので、個人的にもGitHubを使っていこうと思います!
さて、今日の振り返りです!
以前、Slack botを作成しました。
先週、その作成したbotを実際にCloudWatch Eventsで時間指定を設定し、botとして運用できている様子を確認できました!
少し問題点を指摘して頂いたので、手を加えていきます。それは、この二点です。
今回は、これらの情報をGitHubのWikiに書くことで対応しました。
今後運用していくにあたり、名前で想像がついたとしても、実際の方法などが明記されているほうが運用しやすいですもんね。つい、私が作っていると、ほかの人が使うところまで想定できていないときもあるので気を付けたいと思います。
いつも手動でIAMロールを設定していたのですが、CloudFormationを使って自動化をしていきます。
そのため、お手本となるYAMLファイルをリモートのブランチ上から落としてきます。
まず、ローカルリポジトリの情報を更新します。
git fetch
リモート上のフォルダの内容を表示することが出来るので、試しに見てみました。
git show origin/[branch_name]:[file_name]
見ることが出来ました。さて、いよいよリモートのブランチ上のデータをローカルに落としてきます。
git checkout origin/[branch_name] -- [file_name]
さて、CloudFormationを作成するIAMロールを作成していきます。リモートから落としてきたYAMLファイルを見ながら見よう見まねで書き進めていきます。リソースはCASTSとします。
以前、STS対応を進めたときのIAMユーザー、IAMロールを作成したときのポリシーの設定も見ながら進めていきます。
とりあえず、このように書いて実行してみました。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
CASTS:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Principal:
- AWS: "arn:aws:iam::XXXXXXXXXX:root"
Action:
- "sts:AssumeRole"
RolePolicies:
Type: "AWS::IAM::Policy"
Properties:
PolicyName: "AdministratorAccess"
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action: "*"
Resource: "*"
Roles:
- !Ref "make-STS-role"
しかし、このようなエラーが出て進みませんでした。
Template format error: Unresolved resource dependencies [make-STS-role] in the Resources block of the template
原因はPolicy nameに入っているのが文字列ではなかったことと、Principalの配列の表記がおかしかったことから、エラーが発生していました。その部分を訂正していきます。
今回、ポリシーは新規ではなく、既存のAdministratorAccessを使うので、このような形で行けるかもしれない、と社員さんが提案してくださったものを入れてみると、見事成功しました!
CASTS:
Type: "AWS::IAM::Role"
Properties:
Path: "/"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Principal:
AWS:
- "arn:aws:iam::XXXXXXXXXX:root"
Action:
- "sts:AssumeRole"
RoleName: "ca-hands-on-cfn"
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/AdministratorAccess"
最初、RoleNameを指定せず、作成していました。しかし、IAMロールの名前がランダムで表記され、なにかわからなくなってしまうため、増やしました。
多くの例でポリシーを作るパターンが載っていたため、既存のものでするときのやり方が分からず、意外と時間がかかってしまいました。
余計なことをしすぎず、サクッと終わらせていきたいです!