GPUでChainerを動かすならDeep Learning Base AMI(Ubuntu)を使用するのが楽。

はじめに

私が自分のPCでGPU Learningしようとしてセットアップで四苦八苦していた際に、AWSからDeep Learning Base AMIなるものが昨年11月に出ていたと知り、試した所非常に簡単に学習まで行うことが出来たのでそのやり方についてまとめました。

AWS Deep Learning Conda と Base AMI の利用開始について

Deep Learning Base AMI

Deep Learning Base AMIはセットアップやパスの設定がめんどい、NVIDIA driver, CUDA, CuDNN, Python, etc…が最初から入ってるAMIです。

UbuntuかLinux版があり、主要フレームワーク(MXNet, TensorFlow, Caffe2, PyTorch, Theano, CNTK, Keras)がプリインストールされてるAMIもあります。
image.png

AWS Marketplace: Deep Learning Base AMI (Ubuntu)

料金

  • EC2インスタンス稼働時の料金 + EBSの料金
  • p2.xlargeが$0.900/hr(us-east)で、平均1日3時間程起動 + EBSの料金で1ヶ月3000円程でした。(300円/1dayくらい)
  • 自分の場合はEIPを使用せず、こまめに停止させてたので参考までに。

どうしてUbuntu?

環境構築

今回作成するインスタンスの設定は以下です。

設定項目
リージョン us-east(バージニア北部)
AMI Deep Learning Base AMI (Ubuntu) – ami-10ef8d6a
インスタンスタイプ p2.xlarge

EC2インスタンスの作成

制限緩和リクエストを送る

おそらくデフォルトだと、p2, p3インスタンスの作成制限が「0」となっており、作成できません。
そのため作成するには、(https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#Limits:) から制限緩和リクエストを送る必要があります。
制限緩和リクエストについては日本語大丈夫ですが、承認まで1~2日ほどかかりました。
image.png

EC2インスタンスを新規作成。

EC2のマネジメントコンソール画面(https://console.aws.amazon.com/ec2/) からインスタンスの作成を選択。

使用するAMIを選択。

image.png

インスタンスタイプを選択。

とりあえずGPU Learningがしたかったため、最も安いp2.xlargeを選択。
image.png

機械学習用途だと、p2かp3になりますが、p3の方が優れていてお高いです。
Amazon EC2 P2 インスタンス| AWS

P2 インスタンスでは、最大で 16 個の NVIDIA K80 GPU、64 個の vCPU、および 732 GiB のホストメモリを、192 GB の GPU メモリ、4 万件の並列処理コア、70 テラフロップの単精度浮動小数点数演算、および 23 テラフロップスを超える倍精度浮動小数点数演算と組み合わせて利用できます。

Amazon EC2 P3 (英語ページだったのでGoogle翻訳を載せます。)

最大8つのNVIDIA Tesla V100 GPUを搭載したP3インスタンスは、1ペタフロップの混在精度、125テラフロップの単精度、および62テラフロップの倍精度浮動小数点性能を提供します。P3インスタンスには、カスタムIntel Xeon E5(Broadwell)プロセッサーと488 GB DRAMをベースにして、最大64のvCPUが搭載されています。

他の設定はそのままで特に問題ないです。
キーペアの作成も行えば無事インスタンスが立ち上がるはずです。

接続

$ ssh -i /path/my-key-pair.pem user_name@public_ip

user_nameはLinuxだとec2-user、Ubuntuだとubuntuです。
public_ipはインスタンス画面下部の説明タブにある「IPv4 パブリック IP」です。
Are you sure you want to continue connecting (yes/no)?のようなメッセージがでたらyesで良いです。

CUDA関連のパスも既に設定済み!!

GPU学習環境を構築するには、PATHLD_LIBRARY_PATHCUDA_PATHやら設定する必要がありますが、すでにされているためこちらから弄る必要はありません。

デフォルトではCUDA 9環境のため、もしCUDA 8に切り替えたい場合はLD_LIBRARY_PATHを修正して下さい。
AWS Deep Learning Conda と Base AMI の利用開始について | Amazon Web Services ブログ – 新しい Deep Leaning Base AMI の設定

環境変数 LD_LIBRARY_PATH を再設定することで CUDA 8 環境に切り替えることも可能です。環境変数の文字列の CUDA 9 の箇所を CUDA 8 に相当するものに置換するだけです。

Chainer + Cupyのインストール

名前 バージョン
Python 2.7.12 or 3.5.2
Chainer 3.2.0
Cupy 2.2.0

コマンドは使いたいPythonのバージョンで適宜読み替えて下さい。
Python2系の場合はpython, pip、Python3系の場合はpython3, pip3になります。

ubuntu@ip-xx:$ sudo pip3 install chainer

Chainer v3からかインストールと一緒にcupyが入らなくなってます。なのでこちらからcupyをインストールしてあげます。(数分かかります)

ubuntu@ip-xx:$ sudo pip3 install cupy

MINSTサンプルで確認

GPU Learningが出来るかMINSTサンプルで確認して下さい。

ubuntu@ip-xx:$ wget https://raw.githubusercontent.com/chainer/chainer/v3/examples/mnist/train_mnist.py

このまま実行すると、ImportError: No module named '_tkinter', please install the python3-tk packageとなるので必要なmoduleをいれます。

ubuntu@ip-xx:$ sudo apt-get install python3-tk

matplotlib関係の設定が必要なため設定します。

ubuntu@ip-xx:$ vi .config/matplotlib/matplotlibrc
.config/matplotlib/matplotlibrc
backend      : Agg

$DISPLAYが未定義でmatplotlibがコケる問題を再発させない方法

これで実行してエラーなく動作すれば大丈夫です。

ubuntu@ip-xx:$ python3 train_mnist.py -g 0

うまくいかない場合はコメント等で指摘して頂けると助かります🙇

続きを読む

AWS re:Invent 2017 現地レポートにみる2018年AWSの最新技術

AWSサイト上に掲載された「re:Invent 2017 現地レポート」。28日のTUESDAY NIGHT LIVE、29日のAndy JassyによるKEYNOTE基調講演、それから30日のWerner VogelsによるKEYNOTE基調講演のレポートのさわりを紹介します。

※下記サイトからの転載。ビッグデータ・AIなどに関するトピックを毎週取り上げています。
TechCrowd: https://www.techcrowd.jp/related/

TUESDAY NIGHT LIVE

re:Inventの3日目に開催されたナイトキーノート「Tuesday Night Live」では Peter DeSantis(Vice President, AWS Global Infrastructure)が登壇し、AWS インフラストラクチャの拡大と、グローバルに張り巡らされる冗長化されたネットワーク、高い可用性の重要性について強調しました。

またDr. Matt Wood(GM Artificial Intelligence)が、AI や Deep Learning の分野における Amazon EC2 の活用について3つの事例をもとに紹介しました。そして ここ数年の AI、Deep Learning の飛躍的な進化の要因として3つの要因をあげました。1つ目はハードウエアによる高速化。NVIDIA の最新 GPU の V100 はディープラーニングを高速化する機構をハードウェアに組み込んでおり、V100 を 8 個搭載した p3.16xlarge はペタフロップス(PFLOPS)級の非常に高い処理性能を実現。2 つ目は、機械学習フレームワークの拡充。AWS では Tensorflow、MXNet、Caffe2 などのあらゆるフレームワークが事前設定されたAMIをAWS Marketplace からダウンロード可能です。3つ目にあげたのは、急速に成長しているコミュニティでAWSとMicrosoftが2カ月前に Gluonという機械学習ライブラリを発表したことを紹介しました。

またPeter DeSantisは、EC2のこれまでの仕組みの進化について解説したのちに、新しいハイパーバイザーとベアメタルインスタンスの発表、そのあとにAWSのロードバランサーの進化についても紹介しました。

つぎにAWS の VP and Chief Information Secuirty Officer である Stephen Schmidt が登壇し、AWS におけるセキュリティやイノベーションにおけるセキュリティをどの様に実現しているかを紹介しました。

Amazon Macie の紹介に続き、新サービス Amazon GuardDutyの発表を行いました。GuardDuty は、フルマネージドかつ、継続的なセキュリティ監視および脅威検出サービス。GuardDuty を有効にすると CloudTrail や VPC Flow Logs、DNS ログを含む複数のデータソースからなるイベントを分析し、インフラストラクチャの運用における異常を特定し、機械学習を適用して脅威を非常に正確に識別するとのことです。

KEYNOTE by Andy Jassy

11/29(水) のキーノートでは Andy Jassy(CEO, Amazon Web Services)が登壇、約2 時間半のセッションの中で過去に例を見ないほど多くの新サービスを発表し、満員の会場に AWS の凄まじいイノベーションペースを伝えました。

Machine Learningのパートでは、AWS の Machine Learning のレイヤーについて紹介し、最も下のレイヤーがモデルを自分で作るエキスパート向け、そしてこれらの人はモデルを自分で作って、そのモデルを本番環境にデプロイできる人たちのものだと説明した上で、最も下のレイヤーにおいて AWS は他のプロバイダーと違ったアプローチ、1つのフレームワークで全てを解決できないという立場をとると述べました。

今日では TenserFlow が人気であり、AWS は他のクラウドと比較して TenserFlow が最も稼働しているクラウドと紹介しつつ、もし Computer Vison モデルを作る場合、Caffe 2 が多くの場合で最も良い選択肢になるなど、実現したいことに対して最適なフレームワークがあることを紹介。インターフェイスレベルでも同様で、マイクロソフトと進める Gluon、mxnet や CNTK などを紹介し、AWS ではすべてのフレームワークを提供し、利用者がやりたいことに合わせて選択できるようにする、と強調しました。

現状開発者にとっては Machine Learning の全てが複雑で、Machine Learning のモデルを作ろうとすると、具体的に構築、学習、デプロイの各ステップで様々な作業が発生します。このような開発者にとっての課題に対し、構築、学習、デプロイを簡単に行うことができるようにする Amazon SageMakerを開発したと新サービスAmazon SageMakerを紹介しています。

※Andy Jassyのキーノートでは、多数の新サービスの発表がされています。ここでは、その中でも SageMaker関連のところだけをピックアップして紹介しました。ぜひAWSサイト上の現地レポート、 あるいは動画などご覧ください。

KEYNOTE by Werner Vowels

「21st Century Architectures re:Imagined」をテーマに、初めて re:Invent が開催された 2012 年からのアプリケーションを取り巻く変化を振り返りつつ、Voice User Interface、開発、アーキテクチャ、機械学習におけるイノベーションについて語り、デバイス、ユーザー、スキル管理ツールを備えた職場のための Alexa である Alexa for Business や、コード作成、実行、デバッグのための完全マネージドのクラウド IDE である AWS Cloud9 、全てのユーザーが Function を公開・取得することができる AWS Serverless Application Repository などの新サービスおよび機能が発表されました。

AWS Cloud9の発表のパートでは、まず開発がますます多人数で協力して作業するようになってきており、チームのメンバーは世界中に散らばり、より多くのプログラミング言語が状況に応じて使い分けられるようになってきていると解説した上で、素晴らしいプラットフォームには素晴らしいIDE(統合開発環境)がつきものであると話し、AWS Cloud9の一般提供開始を発表しました。

AWS Cloud9 は完全マネージドのクラウド IDE であり、AWS Cloud9 上でコードを書いて、実行し、そしてデバッグすることができます。AWS Cloud9 はブラウザから操作することができ見た目のテーマを明るめや暗めのものにカスタマイズしたりキーマップを Emacs などに変更することもでき、シンタックスハイライトなどの機能に対応する言語は多岐に渡っており Javascript や Ruby、Python、Go なども利用できるとのこと。
またAWS Cloud9を使うとIDE 上で Lambda Function の Blue Print(Lambda Function のコードの雛形)の一覧を表示・選択することができるので Lambda Function の開発を簡単に開始することができ他の開発者の AWS Cloud9 の環境にアクセスしペアプログラミングやコードレビューができる機能などもあることを、実際にデモをしながら説明してくれた様子も、動画をご覧になければ実際に見ることができます。
年末年始の休みにぜひご覧ください

続きを読む

AWS Marketplace で使用量課金しているインスタンスの使用量追跡方法についてメモ

tl;dr 事件は AWS Marketplace で起こった 経緯 初動 原因 対処 MeterUsage API 概要 aws-marketplace:MeterUsage アクション MeterUsage for AWS SDK for Ruby ということで tl;dr aws.amazon.com この仕組み… 続きを読む

AWSサービスの概要を一覧化するスクレイピング

背景

AWSにはサービスが多種多様にあり、なかなか全体感が一覧できません。
初学者には「全体的にどんなサービスがあるの?」というのが俯瞰的に見ることができないのか「サービスのカテゴリとサービス名と、その概要を一覧化してくれ」なんてことがあろうかと思います。
対してうるせぇググれよさっと各サービスの概要説明を一覧にして差し上げるのがクラウド時代のエンジニアの所作と思われます。知らんけど。

やってみる

cheerio-httpcliでクローリング&スクレイピングしてみました。
最初はHeadless Chromeで始めたのですが、どうやらSPAはなさそうでcheerio-httpcliでよいだろうと書き直しました。

コードは以下に配置しています。
https://github.com/morimop/aws-services-list

  • 重複あっても気にしない
  • 一応言語切り替えができるかもしれない雰囲気は出してみる

うまくいかなかったところ

サービスごとにレイアウトが統一されていないので、ここを取ってくればいい、という単純な判定はできませんでした。

index.js
            const pElements = [].filter.call(
              $('main').find('p'),
              (pn)=>{
                if($(pn).find('a').length == 0){
                  return true;
                };
                return ($(pn).find('a').text() != $(pn).text());
              });

この箇所はEMRのページのせいです。このページだけHadoopやらSparkやらのリンクが冒頭に付いているので、これを除外しています。

index.js
          return $('p').parent().text().trim();

mainが見つからなかったページはとりあえず何か取ってくる、という雑仕様です。
AWS Marketplaceのページが相当おかしな感じになります。

結果

出力は./tmp/以下にJSONで出力していますので、JSON to CSVしたりするとEXCELで見られると思われます。
sample-services.PNG
圧巻。

詳細を以下に貼り付けます。長いので前半のちょっとだけを転載します。

“category” “services__name” “services__href” “services__abstruct”
“コンピューティング” “Amazon EC2” https://aws.amazon.com/jp/ec2/?nc2=h_m1 “Amazon Elastic Compute Cloud (Amazon EC2) は、安全でサイズ変更可能なコンピューティング性能をクラウド内で提供するウェブサービスです。ウェブスケールのクラウドコンピューティングを開発者が簡単に利用できるよう設計されています。 Amazon EC2 のシンプルなウェブサービスインターフェイスによって、手間をかけず、必要な機能を取得および設定できます。お客様のコンピュートリソースに対して、高機能なコントロールが提供され、Amazon の実績あるインフラストラクチャ上で実行できます。Amazon EC2 では、わずか数分間で新規サーバーインスタンスを取得して起動できるようになります。これにより、コンピューティング要件の変化に合わせて、すばやく容量をスケールアップおよびスケールダウンできます。実際に使用した分のみ料金が発生するため、Amazon EC2 はコンピューティングの経済性も変革します。Amazon EC2 を利用すれば、耐障害性に優れたアプリケーションの構築が可能になり、よくある障害のシナリオとは無縁になります。”
“” “Amazon EC2 Container Registry” https://aws.amazon.com/jp/ecr/?nc2=h_m1 “Amazon EC2 Container Registry (ECR) は、完全マネージド型の Docker コンテナレジストリです。このレジストリを使うと、開発者は Docker コンテナイメージを簡単に保存、管理、デプロイできます。Amazon ECR は Amazon EC2 Container Service (ECS) に統合されているため、開発から本番までのワークフローを簡略化できます。Amazon ECR を使用すると、自前のコンテナリポジトリの運用や、基盤となるインフラストラクチャのスケーリングの検討は不要になります。Amazon ECR は非常に可用性が高くスケーラブルなアーキテクチャでイメージをホストするため、コンテナをアプリケーションに確実にデプロイすることが可能です。AWS Identity and Access Management (IAM) に統合すると、各リポジトリをリソースレベルで制御できます。Amazon ECR に前払い料金などの義務はありません。リポジトリに保存したデータ量とインターネットに送信されたデータ量に対してのみ料金が発生します。 AWS 無料利用枠の一環として、Amazon EC2 Container Registry を無料でお試しいただけます。Amazon ECR では、新しいお客様に、月 500 MB 分のストレージを 1 年間にわたって提供いたします。”
“” “Amazon EC2 Container Service” https://aws.amazon.com/jp/ecs/?nc2=h_m1 “Amazon EC2 Container Service (ECS) は、非常にスケーラブルかつ高性能なコンテナ管理サービスで、Docker コンテナに対応しており、Amazon EC2 インスタンスのマネージド型クラスターでアプリケーションを簡単に実行できます。Amazon ECS を使用すると、自社でクラスター管理インフラストラクチャのインストール、運用、スケールを行う必要がなくなります。簡単な API 呼び出しを使用して、Docker 対応アプリケーションの起動と終了、クラスターの完了状態のクエリ、多くの使い慣れた機能 (セキュリティグループ、Elastic Load Balancing、EBS ボリューム、IAM ロールなど) へのアクセスを実行できます。Amazon ECS を使用することで、リソースニーズと可用性要件に基づいて、クラスター全体のコンテナの配置をスケジューリングできます。ビジネスまたはアプリケーション固有の要件を満たすために、独自のスケジューラーまたはサードパーティ製のスケジューラーを統合することもできます。 Amazon EC2 Container Service に追加料金は発生しません。アプリケーションを保存および実行するために作成した AWS リソース(EC2 インスタンス、EBS ボリュームなど)に対してのみ料金が発生します。”
“” “Amazon Lightsail” https://amazonlightsail.com “Everything you need to jumpstart your project on AWS—compute, storage, and networking—for a low, predictable price. Launch a virtual private server with just a few clicks.”
“” “Amazon VPC” https://aws.amazon.com/jp/vpc/?nc2=h_m1 “Amazon Virtual Private Cloud (Amazon VPC) により、アマゾン ウェブ サービス (AWS) クラウドの論理的に分離したセクションをプロビジョニングできます。これにより、AWS リソースをユーザー定義の仮想ネットワークで起動できます。ユーザーの IP アドレス範囲の選択、サブネットの作成、ルートテーブルとネットワークゲートウェイの構成など、仮想ネットワーク環境を完全にコントロールできます。VPC では、リソースやアプリケーションに安全かつ簡単にアクセスできるよう、IPv4 と IPv6 を両方とも使用できます。 Amazon Virtual Private Cloud のネットワーク設定は容易にカスタマイズすることができます。例えば、インターネットとのアクセスが可能なウェブサーバーのパブリック サブネットを作成し、データベースやアプリケーションサーバーなどのバックエンドシステムをインターネットとのアクセスを許可していないプライベート サブネットに配置できます。セキュリティグループやネットワークアクセスコントロールリストなどの複数のセキュリティレイヤーを活用し、各サブネットの Amazon EC2 インスタンスへのアクセスをコントロールすることができます。”
“” “AWS Batch” https://aws.amazon.com/jp/batch/?nc2=h_m1 “AWS Batch を使用することにより、開発者、科学者、およびエンジニアは、数十万件のバッチコンピューティングジョブを AWS で簡単かつ効率的に実行できます。AWS Batch では、送信されたバッチジョブのボリュームと特別なリソース要件に応じて、コンピューティングリソース (CPU やメモリ最適化インスタンス) の最適な数量とタイプを動的にプロビジョニングできます。AWS Batch を使うと、ジョブを実行するためのバッチコンピューティングソフトウェアやサーバークラスターをインストールしたり、管理したりする必要がなくなります。これにより、結果の分析と問題解決に集中できます。AWS Batch では、Amazon EC2 やスポットインスタンスなどの AWS コンピューティングサービスと機能を最大限に活用して、バッチコンピューティングワークロードを計画、スケジュール作成、実行します。 AWS Batch に対する追加料金はありません。バッチジョブを保存したり実行したりするために作成した AWS リソース (EC2 インスタンスなど) に対してのみ料金が発生します。”
“” “AWS Elastic Beanstalk” https://aws.amazon.com/jp/elasticbeanstalk/?nc2=h_m1 “簡単に開始でき、不足を感じることなく利用 AWS Elastic Beanstalk は、Java、.NET、PHP、Node.js、Python、Ruby、Go および Docker を使用して開発されたウェブアプリケーションやサービスを、Apache、Nginx、Passenger、IIS などの使い慣れたサーバーでデプロイおよびスケーリングするための、使いやすいサービスです。”
“” “AWS Lambda” https://aws.amazon.com/jp/lambda/?nc2=h_m1 “AWS Lambda を使用すれば、サーバーのプロビジョニングや管理なしでコードを実行できます。課金は実際に使用したコンピューティング時間に対してのみ発生し、コードが実行されていないときには料金も発生しません。Lambda を使用すれば、実質どのようなタイプのアプリケーションやバックエンドサービスでも管理を必要とせずに実行できます。コードさえアップロードすれば、高可用性を実現しながらコードを実行およびスケーリングするために必要なことは、すべて Lambda により行われます。コードは、他の AWS サービスから自動的にトリガーするよう設定することも、ウェブやモバイルアプリケーションから直接呼び出すよう設定することもできます。 AWS Lambda とは(日本語字幕)”
“” “Auto Scaling” https://aws.amazon.com/jp/autoscaling/?nc2=h_m1 “Auto Scaling により、アプリケーションの可用性を維持できると同時に、お客様が定義する条件に応じて Amazon EC2 のキャパシティーを動的および自動的に縮小あるいは拡張できます。Auto Scaling を EC2 インスタンスのフリート管理に使用することによって、フリートの状態と可用性を維持し、必要な数の Amazon EC2 インスタンスを確実に実行できます。また、Auto Scaling を EC2 インスタンスの動的スケーリングに使用することによって、需要が急激に上昇したときには Amazon EC2 インスタンスの数を自動的に増やしてパフォーマンスを維持し、需要が落ち着いた状態にあるときには能力を縮小してコストを削減できます。Auto Scaling は需要のパターンが一定のアプリケーションにも、使用量が時間、日、週で変動するアプリケーションにも適しています。Auto Scaling を Amazon EC2 で使用する以外に、Application Auto Scaling を使用して、Amazon ECS、Amazon EC2 スポットフリート、Amazon EMR クラスター、AppStream 2.0 フリート、Amazon DynamoDB といった AWS のその他のサービスのリソースを自動的にスケールできます。 12 か月間の AWS 無料利用枠と、24 時間年中無休のカスタマーサービスやサポートフォーラムなどの AWS の基本的なサポート機能を利用できます。”
“” “Elastic Load Balancing” https://aws.amazon.com/jp/elasticloadbalancing/?nc2=h_m1 “Elastic Load Balancing は、アプリケーションへのトラフィックを複数のターゲット (Amazon EC2 インスタンス、コンテナ、IP アドレスなど) に自動的に分散します。Elastic Load Balancing は、変動するアプリケーショントラフィックの負荷を、1 つのアベイラビリティーゾーンまたは複数のアベイラビリティーゾーンで処理できます。Elastic Load Balancing では、3 種類のロードバランサーが用意されています。これらはすべて、アプリケーションの耐障害性を高めるのに必要な高い可用性、自動スケーリング、堅牢なセキュリティを特徴としています。 Application Load Balancer”
“ストレージ” “Amazon Simple Storage Service (S3)” https://aws.amazon.com/jp/s3/?nc2=h_m1 “今日の企業に求められるのは、大規模なデータを簡単かつ安全に収集、保存、分析する能力です。Amazon S3 は、ウェブサイトやモバイルアプリケーション、社内アプリケーション、IoT センサーやデバイスからのデータなど、どこからの、どのような量のデータでも保存と取得が可能なオブジェクトストレージです。これは 99.999999999% の耐久性を提供し、すべての業界のマーケットリーダーによって使用される何百万ものアプリケーションのデータを保管できるように設計されています。S3 では最も厳格なセキュリティ要件を満たす包括的なセキュリティおよびコンプライアンス機能が提供されます。お客様は柔軟にデータを管理して、コスト最適化、アクセス制御、コンプライアンスに対応できるようになります。S3 は、インプレースクエリ機能を備えた唯一のクラウドストレージソリューションであり、S3 の保管データに強力な分析を直接実行できます。また、Amazon S3 は、ISV ソリューションやシステムインテグレータのパートナーによる最大のエコシステムを備えた、最も強力なサポートが提供されているストレージプラットフォームです。 “

続きを読む

【Terraform】インスタンスが作成できない。(Error launching source instance: OptInRequire)

エラー

main.tfを作成して、terraform applyをしたら、下記エラーが出ました。
AWSのコンソールで確認すると、EC2インスタンスのみ作成されていないようでした。
→セキュリティグループやVPCなど、インスタンスに依存しない部分は作成されていました。

Error applying plan:

1 error(s) occurred:

* aws_instance.TestEC2: 1 error(s) occurred:

* aws_instance.TestEC2: Error launching source instance: OptInRequired: In order to use this AWS Marketplace product you need to accept terms and subscribe. To do so please visit http://aws.amazon.com/marketplace/pp?sku=aw0evgkw8e5c1q413zgy5pjce
    status code: 401, request id: 845acf0d-7dec-4ebd-b4b4-a4771f04ea16

Terraform does not automatically rollback in the face of errors.
Instead, your Terraform state file has been partially updated with
any resources that successfully completed. Please address the error
above and apply again to incrementally change your infrastructure.

解決方法

AWS Marketplaceで認証を許可してから、再度terraform applyを実行!

1.まずは、エラーに書いてあったWebページに移動し、[continue]を押下します。

To do so please visit http://aws.amazon.com/marketplace/pp?sku=aw0evgkw8e5c1q413zgy5pjce

スクリーンショット 2017-10-29 14.00.19.png

2.[Manual Launch]を選択し、[Accept Software Terms]を押下します。

スクリーンショット 2017-10-29 14.04.39.png

3.下記画面が出たら成功です!

スクリーンショット 2017-10-29 14.04.46.png

再度terraform applyして、問題なければ完了!

続きを読む