LoginSignup
3
3

More than 3 years have passed since last update.

localstackを使用して「Unable to get IAM security credentials from EC2 Instance Metadata Service.」でハマった件

Last updated at Posted at 2020-05-08

はじめに

localstackを使用してハマった内容について、備忘録としてまとめました。

localstackとは

localstackとは、クラウドアプリケーションをオフラインで開発/テストするためのツールで、公式ページには、以下のように書かれています。

(原文)
It spins up a testing environment on your local machine that provides the same functionality and APIs as the real AWS cloud environment.
(google翻訳)
実際のAWSクラウド環境と同じ機能とAPIを提供するローカルマシンのテスト環境を起動します。

設定と動作

私は、dockerイメージを利用して、localstack環境を構築しました。
その時のdocker-compose.yamlがこちらです。

docker-compose.yaml
version: '2.1'
services:
  localstack:
    image: localstack/localstack
    ports:
      - "4566-4599:4566-4599"
      - "8080:8080"
    environment:
      - SERVICES=dynamodb,s3,sqs

クラウドアプリケーションは、AWS SDK for .NETを使用して作成しました。

で、いざ動かしてみると、以下のような例外が発生して上手く動きません。

Exception
Unable to get IAM security credentials from EC2 Instance Metadata Service.

以前、別の環境でlocalstackを使った事があったのですが、その時は上記の現象は発生しませんでした。

解決策

ネットでいろいろ調べていると、localstackのGITissue上がっていましたので、それらを試してみたのですが、まったく変わらずでした。

その後もいろいろ調べていたのですが、有効な情報も出てこず、途方に暮れていた時に、ふとどこかで「AWS SDKは認証情報としてawscliの設定情報を参照することがある」というのを聞いた事を思い出して、credentials/configの設定を見直すと、defaultの設定をしていませんでした。

defaultが設定されてないので情報が取れないのではと思い、試しに以下のように設定して再度アプリケーションを動作させると、見事に動きました!!!!!

credentials
[default]
aws_access_key_id = dummy
aws_secret_access_key = dummy
region=us-east-1
config
[default]
region = us-east-1

今回は、各KEYにdummyを登録しましたが、値は何でも良いようです。

まとめ

awscliはちゃんとdefaultを設定しておきましょう。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3