Amazon Web Services ブログ
AWS Snowball Edge と Amazon EC2 を使用して Linux エッジコンピューティングソリューションを構築する
データソースの近くでデータ推論を実行しなければならない状況は数多くあります。多くの場合、これらはリモートであり、接続がない場所で生じます。次の例を考えてみましょう。
- リモートの石油掘削プラットフォームには、データを生成する多数のセンサーがあります。重要なコンポーネントについては、摩耗や破損、または故障がないか監視する必要があり、交換は先を見越して行う必要があります。
- 土壌の水分、湿度、PH 値を監視するさまざまなセンサーを備えた農場では、推論を使用して、健康と成長を最大化できる適切なタイミングで水と栄養素を供給する必要があります。
- 接続がない前線基地に軍隊が配備されるときには、供給と物流を自動化しなければなりません。
- 自動運転車両は毎日大量のデータを生成します。これらは、一元化された場所で毎日、オフロードされ、タグが付けられ、異常に対応するために前処理される必要があります。
- 現代の工場の組立ラインでは、部品を効率的に移動し、その配送を最適化する必要があります。
- コンサート会場では、制作会社は複数のカメラからの映像を集約し、異なるフォーマットに変換する必要があります。
これらすべてのシナリオでは、データソースの近くでコンピューティング、ストレージ、ネットワークを実行することを要します。これらの問題は、実行のために構築されたデータセンタースペースを必要としない高耐久性デバイスである AWS Snowball Edge デバイスを使用して解決できます。Amazon S3、Amazon EC2、Amazon EBS、AWS IoT Greengrass などのクラウドネイティブなサービスや、データを取り込むために Network File System (NFS) インターフェイスを実行できます。
このブログ投稿では、AWS Snowball Edge デバイスを使用した Linux ベースのエッジコンピューティングソリューションを開始する方法について説明します。特に、Snowball Edge Compute Optimized デバイスに焦点を当てています。
注文プロセス
Snowball Edge デバイスでコンピューティングインスタンスを使用するには、ジョブを作成し、AMI を指定します。AWS Snowball マネジメントコンソールから、AWS コマンドラインインターフェイス (AWS CLI) で、またはいずれかの AWS SDK を使用して、これを行うことができます。通常、ジョブを作成する前に実行する必要があるいくつかの前提条件があります。
- AWS マネジメントコンソールにログインし、文書化された手順を使用して Amazon マシンイメージ (AMI) を作成し、それを Snowball Edge の注文に追加します。AMI は、VM Export/Import を使用して作成することもできます。
- 配送業者から Snowball Edge デバイスを受け取ります。
注意: Apache、PostgreSQL、SQLite、PHP、Python などの必要なソフトウェアパッケージとツールをインストールします。Snowball クライアントと AWS CLI をインストールすることもできます (1.16.14 が推奨バージョンです)。これは、Snowball Edge の EC2 インスタンスから CLI を使用する場合に役立ちます。
Snowball Edge デバイスは、AWS マネジメントコンソールから注文できます。短期の仕事には従量課金制モデルで、長期の契約には割引価格で、それらを注文します。Snowball Edge デバイスには、Compute Optimized と Storage Optimized という 2 つの種類があります。Snowball Edge Storage Optimized デバイスは、エッジコンピューティングに使用できますが、S3 ストレージキャパシティーの 2 倍のキャパシティーがある一方で、Snowball Edge Compute Optimized デバイスのコンピューティングリソースの半分のリソースしか持たないことから、データ転送により一般的に使用されます。
Snowball Edge Compute Optimized デバイスは、現在、52 個の vCPU、208 GB の RAM、および GPU オプションを提供しています。また、パフォーマンスが最適化された Amazon EBS ブロックストレージボリュームを作成するための 7.68 TB の NVMe ストレージと、オブジェクトストレージ用に 39.5 TB の使用可能な HDD ストレージキャパシティーがあります。詳細については、AWS Snowball Edge の仕様を参照してください。
サポートされている AMI
現在、AWS Snowball は、CentOS 7 (x86_64) – with Updates HVM、Ubuntu Server 14.04 LTS (HVM)、および Ubuntu 16.04 LTS – Xenial (HVM) の Snowball Edge 用の AMI (Amazon マシンイメージ) をサポートしています。当社は、お客様のニーズに応える機能を継続的に追加しており、将来的にはさらなるオペレーティングシステムをサポートする予定です。
Snowball Edge サイトの準備
1. Snowball Edge を電源の近くに配置し、電源ケーブルを接続します。CAT-6 ケーブルを備えた組み込みの RJ45 イーサネットポート、Direct Attached Copper (DAC) ケーブル、またはネットワークインフラストラクチャに接続するための SFP を使用してネットワークに接続できます。
2. RJ45 は 1 Gbs または 10 Gbs をサポートします。SFP ポートは 10 Gbs または 25 Gbs をサポートします。QSFP ポートは 25 Gbs または 40 Gbs の速度をサポートし、最新の Snowball Edge デバイスはこのポートで 100 Gbs さえもサポートします。SFP または DAC ケーブルは、Snowball Edge デバイスに付属していません。デバイスでサポートされている最新のネットワーク接続については、Snowball Edge の仕様を参照してください。
3. ワークステーションから Snowball Edge デバイスに次のネットワークポートを開く必要があります。
# | ポート (TCP) | サービス |
1 | 8080 | S3 の HTTP エンドポイント |
2 | 8443 | S3 の HTTPS エンドポイント |
3 | 8243 | EC2 の HTTPS エンドポイント |
4 | 8008 | EC2 の HTTP エンドポイント |
5 | 22 | 管理/診断 |
6 | 9091 | アクティベーション |
4. Kindle ディスプレイが設置されている Snowball Edge デバイスのフロントパネルで、電源ボタンを押します。デバイスの自己検証と完全な起動までには 15〜20 分かかる場合があります。
5. Snowball Edge コントロールパネルから、
- [接続] を選択し、続けて [DHCP] または [静的] を選択します。
- 静的 IP を選択するには、IP アドレス、ネットマスク、およびデフォルトゲートウェイを入力します。
- 完了したら変更を適用します。
Linux 管理ワークステーションの準備
この例では、Linux マシンを管理ワークステーションとして使用しています。Microsoft Windows または MAC を使用できます。ただし、コマンドラインはそれに応じて変更する必要があります。
このワークステーションは、ロック解除、サービスの起動、デバイスの監視などの一般的な Snowball Edge 管理タスクを実行します。
EC2 インスタンスの起動
次の図は、3 つの EC2 インスタンスを使用した Snowball Edge のデプロイを示しています。各インスタンスには独自のプライベート IP アドレスがあります。現在のアドレススキームに一致するパブリック IP アドレスを持つ仮想ネットワークインターフェイスを作成しています。セキュリティグループを使用すると、特定のタイプのネットワークトラフィックをブロックまたは許可できます。
設定
Snowball Edge デバイスを設定する前に、AWS マネジメントコンソールから、マニフェストファイルとロック解除コードを取得する必要があります。
AWS OpsHub または AWS CLI を使用して Snowball Edge を管理できます。OpsHub をインストールすると、数回クリックするだけで、ロックを解除し、ネットワークインターフェイスを設定し、EC2 インスタンスを起動できます。AWS OpsHub は、Snowball Edge が利用可能な場所であれば無料で利用できます。このデモ動画で、AWS OpsHub の動作を確認してください。
AWS OpsHub の詳細と開始方法については、Snowball のリソースページにアクセスしてください。
AWS Snowball Edge の設定の開始
以下の AWS CLI の手順を使用してデバイスを設定することもできます。この手順を実行するには、Snowball Edge クライアントと AWS CLI をダウンロードしてインストールする必要があります。
1. 管理ワークステーションにログインします。Snowball Edge の IP アドレスに ping して、応答を確認します。
2. configure を実行し、Snowball Edge プロファイルを作成します。複数の Snowball Edge デバイスが使用されている場合、プロファイルにより管理が容易になります。
prompt> snowballedge configure –profile snow1
Configuration will stored at /home/user1/.aws/snowball/config/snowball-edge.config
Snowball Edge Manifest Path: /home/user1/SNOW/ID14a49650-53e6-47bc-82a9-c27a5133f56e_manifest.bin
Unlock Code: 7a1f2-cbb39-5b02c-597f4-c2b99
Default Endpoint: https://192.168.1.116
prompt>
3. Snowball Edge のロックを解除します。
prompt> snowballedge unlock-device --profile snow1
The Snowball Edge unlock status is: UnlockSnowballResult(status=UNLOCKING)
prompt>
4. Snowball Edge デバイスのステータスを確認し、接続に使用した物理ネットワークインターフェイス ID を書き留めます。
prompt> snowballedge describe-device --profile snow1
"DeviceId" : "JID14a49650-53e6-47bc-82a9-c27a5133f56e",
"UnlockStatus" : {
"State" : "UNLOCKED"
},
"ActiveNetworkInterface" : {
"IpAddress" : "192.168.1.116"
},
"PhysicalNetworkInterfaces" : [ {
"PhysicalNetworkInterfaceId" : "s.ni-98c7e5d691a07a62e",
"PhysicalConnectorType" : "RJ45",
"IpAddressAssignment" : "STATIC",
"IpAddress" : "192.168.1.116",
"Netmask" : "255.255.255.0",
"DefaultGateway" : "192.168.1.2",
"MacAddress" : "aa:bb:cc:11:dd:de"
},
--lines removed --
}
prompt>
Amazon EC2 インスタンスの起動
1. サービスを一覧表示します。
prompt> snowballedge list-services --profile snow1
{
"ServiceIds" : [ "s3", "ec2", "fileinterface" ]
}
2. アクセスキーとシークレットキーを取得します。アクセスキーとシークレットキーは、ローカルの Snowball Edge の EC2/S3 サービスエンドポイントへの認証に使用されます。
prompt> snowballedge list-access-keys --profile snow1
{
"AccessKeyIds" : [ "AKIAABOURMPPK784AG4I" ]
}
prompt>
prompt> snowballedge get-secret-access-key --access-key-id AKIAABOURMPPK784AG4I –profile snow1
[snowballEdge]
aws_access_key_id = AKIAABOURMPPK784AG4I
aws_secret_access_key = jqiTyUvyZM+t2+AeGJ12algPdqKDp9CIXADBX
prompt>
3. AWS configure コマンドを使用して、新しいサービスプロファイルを作成します。
prompt> aws configure –profile compute1
AWS Access Key ID [None]: AKIAABOURMPPK784AG4I
AWS Secret Access Key [None]: jqiTyUvyZM+t2+AeGJ12algPdqKDp9CIXADBX
Default region name [None]: snow
Default output format [json]:
prompt>
4. 仮想ネットワークインターフェイスを作成します。
prompt> snowballedge create-virtual-network-interface --physical-network-interface-id s.ni-98c7e5d691a07a62e --ip-address-assignment STATIC --static-ip-address-configuration IpAddress=192.168.1.172,Netmask=255.255.255.0 –profile snow1
{
"VirtualNetworkInterface" : {
"VirtualNetworkInterfaceArn" : "arn:aws:snowball-device:::interface/s.ni-8c184704e9c0b1872",
"PhysicalNetworkInterfaceId" : "s.ni-98c7e5d691a07a62e ",
"IpAddressAssignment" : "STATIC",
"IpAddress" : "192.168.1.172",
"Netmask" : "255.255.255.0",
"DefaultGateway" : "192.168.1.2",
"MacAddress" : "22:b4:94:23:dc:78"
}
}
prompt>
5. 次のコマンドを使用して、Snowball Edge で設定されているすべての仮想ネットワークインターフェイスを一覧表示できます。
prompt>snowballedge describe-virtual-network-interfaces --profile snow1
{
"VirtualNetworkInterfaces" : [ {
} ]
}
prompt>
6. Snowball Edge に画像を一覧表示して、AMI ID をメモします。
prompt> aws ec2 describe-images --endpoint http://192.168.1.116:8008 --profile compute1
{
"Images": [
{
"Description": "CentOS 7 image for SnowballEdge",
"EnaSupport": false,
"ImageId": "s.ami-05a690772e39d6ff0",
"State": "AVAILABLE",
"Public": false,
"Name": "CentOS7_SBE_Image"
},
{
"Description": "Windows 2012R2 Image for SnowballEdge",
"EnaSupport": false,
"ImageId": "s.ami-09a19c1583173d1d6",
"Platform": "windows",
"State": "AVAILABLE",
"Public": false,
"Name": "Windows_2012R2_SBE_1"
}
]
}
prompt>
7. イメージから Snowball Edge で EC2 インスタンスを起動します。
prompt> aws ec2 run-instances --image-id s.ami-05a690772e39d6ff0 --endpoint http://192.168.1.116:8008 --instance-type sbe1.medium --profile compute1
{
"Instances": [
{
"SourceDestCheck": false,
"InstanceId": "s.i-84f09ff791b6828b0",
"EnaSupport": false,
"ImageId": "s.ami-09a13c1583275d1a6",
"State": {
"Code": 0,
"Name": "pending"
},
"EbsOptimized": false,
"AmiLaunchIndex": 0,
"InstanceType": "sbe1.small"
}
Amazon EC2 インスタンスの確認
1. 起動したインスタンスのステータスを確認します
prompt> aws ec2 describe-instances --endpoint http://192.168.1.116:8008 --profile compute1
{
"Reservations": [
{
"Instances": [
{
"SourceDestCheck": false,
"InstanceId": "s.i-84f09ff791b6828b0",
"EnaSupport": false,
"ImageId": "s.ami-05a690772e39d6ff0",
"State": {
"Code": 16,
"Name": "running"
},
"EbsOptimized": false,
"LaunchTime": "2018-08-22T00:48:32.909Z",
"AmiLaunchIndex": 0,
"InstanceType": "sbe1.small",
"PrivateIpAddress": "34.211.108.9"
}
],
"ReservationId": "s.r-8bc47a1364f21ebab"
}
]
}
prompt>
2. インスタンスに IP アドレスを関連付けます。
prompt> aws ec2 associate-address --public-ip 192.168.1.172 --instance-id s.i-84f09ff791b6828b0 --endpoint http://192.168.1.116:8008 --profile compute1
prompt>
3. AMI を作成する前に、AWS マネジメントコンソールから保存したキーを使用して EC2 インスタンスに接続します。
上記の手順をすべて完了すると、Snowball Edge デバイスで実行されている Linux インスタンスに正常にログインできるようになります。
prompt> ssh ubuntu@192.168.1.172 -i MySshKey1.pem
The authenticity of host192.168.1.172 can't be established.
ECDSA key fingerprint is SHA256:fingerprint
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘' (ECDSA) to the list of known hosts.
Last login: Wed Mar 25 23:36:08 2020 from 192.168.1.100
USD
まとめ
この投稿では、エッジコンピューティングのユースケースを実行するために Snowball Edge デバイスを注文する方法を示しました。注文プロセスでは、独自のカスタム AMI の追加、SnowballEdge デバイスの受け取り、接続、そして snowballedge
コマンドラインを使用したロック解除を行いました。次に、ローカルネットワークに一致する IP アドレススキームを持つ仮想ネットワークインターフェイスの作成を説明したほか、デバイスからの API の認証情報の取得について詳しく説明しました。さらに、EC2 インスタンスを起動し、AWS CLI を使用してそれに仮想ネットワークインターフェイスをアタッチする方法を示しました。最後に、Secure Shell (SSH) を使用した EC2 インスタンスへの接続について説明しました。
この投稿全体で概要を説明して説明した手順を実行することで、AWS Snowball Edge を使用して強力なエッジコンピューティングプラットフォームをデプロイできます。そのプラットフォームの準備ができたら、実際のアプリケーションを構築して、データソースの近くでデータを処理、分析、保存できます。Snowball Edge は、リモートのエッジロケーションでのデータ推論の実行をこれまでになく簡単にしました。これらのデバイスは、操作にデータセンターのスペースを必要としないだけでなく、困難な環境において、データソースの近くでコンピューティング、ストレージ、ネットワークを実行することを可能にします。
この機能の詳細については、AWS Snowball Edge のドキュメントをお読みください。このブログ投稿をお読みいただきありがとうございます。質問やフィードバックがある場合は、コメントセクションからコメントをお寄せください。