カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

既存リポジトリのECRポリシーを取得してJSON整形してくれるワンライナー

はじめに

お久しぶりです。最後に記事を書いたのは2022/4/15なので、半年以上ぶりですね。




・・・


はい、すみません。サボってました笑


ぶっちゃけるとブログのネタは色々あったんですが、いかんせんモチベーションが最低まで落ち込んでいたので、編集画面を開いて記事を作るまでがハードル高くて放置してしまってました。


ただ、今月末に運がいいことにAWSのre:Inventに現地参戦できることになったので、それまでにはモチベーションを回復させておこうとこうして書いている次第です。
前述した通り、ネタは取ってるのでまた徐々に書いていこうと思うので、興味がある方は見ていただけると嬉しいです。


というわけで、復帰1発目は短いですがタイトル通り、ECRのリソースベースポリシーを取得してJSON出力ワンライナーを書いたので、それだけ貼って終わりたいと思います。




ECRポリシーJSON出力ワンライナー

shellはそこまで詳しいわけじゃないので、もっと簡単な方法があるかもしれませんが、以下を使えばECRポリシーをJSON出力することができます。
後はファイルに出力するなり変数に入れるなり好きにできます。

$ aws ecr get-repository-policy --repository-name [リポジトリ名] --query "policyText" --output json  | sed -z -e "s/\\\n//g" -e "s/\\\//g" -e "s/\s//g" -e "s/^\\\"//g" -e "s/}\\\"/}/g" |  jq
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Deny",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "ecr:*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "192.168.0.0/16"
          ]
        },
        "StringNotEquals": {
          "aws:CalledVia": "cloudformation.amazonaws.com",
          "aws:sourceVpce": [
            "vpce-xxxxxxxxxxxxxxxxxx",
            "vpce-yyyyyyyyyyyyyyyyy"
          ]
        }
      }
    }
  ]
}




上記のコマンドで取得したポリシーをファイルに出力して更新後に以下のコマンドを実行するとコマンドラインでポリシーの更新ができます。
Denyを使う場合はポリシーの設定にミスがあるとリポジトリにアクセスできなくなったりするのでご注意ください。

$ aws ecr set-repository-policy --repository-name [リポジトリ名] --policy-text file://testrepo-policy.json





おまけ

最近猫(ラグドール)を飼い始めました。
前に会社を辞めた猫好きな人に猫を飼ったらブログに載せると約束していたので、おまけとして載せておきます。
名前はとむちゃんです。かわいい