sops で localstack の KMS key を使う

sops を使っていて、これ localstack の KMS key を使うことできないかなぁとふと思ってみたので試してみました。

endpont-url を受け取れるように修正すれば一応動かせました。

github.com

特に実用性はないのですけど、備忘録的に残しておきます。 localstack を使ったローカルテストをするときには役に立つかも?

動作確認環境

  • ArchLinux
  • awscli v2.1.13
  • localstack v0.12.4

修正点

対した変更はしていませんが、endpoint-url を環境変数から吸えるようにしました。

   config := aws.Config{
        Region:   aws.String(matches[1]),
        Endpoint: aws.String(os.Getenv("AWS_ENDPOINT_URL")),
    }

sops/keysource.go at localstack · goropikari/sops · GitHub

$ git clone -b localstack --depth 1 https://github.com/goropikari/sops.git
$ docker build -t sops -f Dockerfile-localstack .
$ id=$(docker create sops)
$ docker cp $id:/go/bin/sops sops-localstack
$ docker rm -v $id

$ docker run --rm -p 4566:4566 localstack/localstack:0.12.4
$ export AWS_ENDPOINT_URL=http://localhost:4566
$ alias awsl="aws --endpoint-url $AWS_ENDPOINT_URL"
$ keyarn=$(awsl kms create-key --query KeyMetadata.Arn --output text)
$ export SOPS_KMS_ARN=$keyarn
$ ./sops-localstack foo.json
$ ./sops-localstack -d foo.json
{
        "hello": "localstack"
}

参考

boot2docker - Docker - how can I copy a file from an image to a host? - Stack Overflow