MENU

Knowledge Oasisは主にAIとAWSの知識を共有するブログです。その他ITに関する知識やまれに生活に役立つ知識も共有するかもしれません。

KOふみ
名前はKOふみ(こふみ)。独立系SIerで20年のキャリアを持ち、新人研修の講師から請負開発まで幅広く経験。現在はAIを駆使したソリューション開発に従事。資格は応用情報技術者、データベーススペシャリスト、プロジェクトマネージャー、PMP、簿記2級。AWS学習中で、将来はAWSアンバサダーを目指す。

【AWS Technical Essentials】DynamoDBデモンストレーションの攻略法

【AWS Technical Essentials】DynamoDBデモンストレーションの攻略法
  • URLをコピーしました!

AWSの学習でAWS Technical Essentialsを進めています。Amazon DynamoDBのデモンストレーションでも1か所動かないところがあったのでその対応について解説します。

目次

動かないポイント

動作確認のアプリケーションが動きません。

データを追加する際にエラーになりました。

原因

【AWS Technical Essentials】S3デモンストレーションの攻略法でリージョンの表示がおかしいと指摘していました。S3のデモンストレーションはリージョンの設定が正しくなくても動くのですが、DynamoDBのデモンストレーションではリージョンを正しく設定していないと動きませんでした。

EC2インスタンスに接続してアプリケーションのプログラムを確認したところ /var/app/api/common/constants.js でリージョンの設定を行っていることが分かります。

// Load .env (Only for non-production environments)
if (process.env.NODE_ENV && process.env.NODE_ENV === 'development') {
  require('dotenv').config();
}

exports.NODE_ENV = process.env.NODE_ENV || 'production';
exports.PORT = process.env.PORT || 80;
exports.AWS_PROFILE = process.env.AWS_PROFILE || 'default';
exports.PHOTOS_BUCKET = process.env.PHOTOS_BUCKET || '';
exports.DEFAULT_AWS_REGION = process.env.DEFAULT_AWS_REGION || '';
exports.SHOW_WARNINGS = process.env.SHOW_WARNINGS || 1;
exports.SHOW_ADMIN_TOOLS = process.env.SHOW_ADMIN_TOOLS || 0;
exports.TABLE_NAME = 'Employees';

環境変数DEFAULT_AWS_REGION を参照していますが、環境変数が設定されていないため動きません。

対応

リージョンを正しく設定する必要があります。環境変数を設定すれば動きます。

環境変数を設定する方法

以下のコマンドで環境変数を設定することができます。この方法だとログアウトすると消えてしまうのでログアウトした場合は再度設定が必要です。

export DEFAULT_AWS_REGION=ap-northeast-1

起動時のスクリプトで環境変数を設定する方法

~/.bashrc ファイルに以下を追加することでサーバ起動時に環境変数が設定されます。source ~/.bashrc でサーバを再起動することなく環境変数に反映することができます。

# 環境変数の設定
export AWS_REGION=ap-northeast-1

aws configを設定する方法

環境変数とは違いますが、今回のプログラムはAWS SDKで動いています。AWS SDKではconfigでリージョンを設定することができます。aws configure と入力すると以下のように入力を求められます。

AWS Access Key ID [None]: your_access_key_id
AWS Secret Access Key [None]: your_secret_access_key
Default region name [None]: your_default_region
Default output format [None]: json

入力が終わると ~/.aws/config が作成されます。このファイルを編集することでSDKの動きを制御することができます。

[default]
region = ap-northeast-1
output = json

config の内容は aws configure list で確認することができます。

      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************EYOU         iam-role    
secret_key     ****************LNzo         iam-role    
    region           ap-northeast-1      config-file    ~/.aws/config

aws configを作成しただけでは使用されません。export AWS_SDK_LOAD_CONFIG=1 で環境変数AWS_SDK_LOAD_CONFIGを設定することで AWS SDKで config が使用されます。

動作確認

正常にデータを登録することができました。

まとめ

今回はデモンストレーションが動かなかったことで、AWS SDKのプログラムでリージョンを設定する方法を学ぶことができました。この記事を書くにあたり sudo コマンドで失敗しました。そのあたりも今度書きたいと思います。AWS Technical Essentialsも終盤です。あと少し頑張っていきましょう!

  • URLをコピーしました!

コメント

コメントする

目次