質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

6489閲覧

JavaScriptでのDynamoDBへのアクセス方法

runa

総合スコア38

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2018/03/22 08:28

前提・実現したいこと

javascriptやAWSについては、全くの初心者です。
教えてください、よろしくお願いします。
AWSのDynamoDBに JavaScriptでアクセスしたいのですが、エラーです。

function自体の書き方は間違っていないと思うのですが、
エラーの原因がどこなのかが分かりません。

発生している問題・エラーメッセージ

下記がChromeのデバック画面での表示です。

エラーメッセージ 1 The SSL certificate used to load resources from https://dynamodb.ap-northeast-1.amazonaws.com will be distrusted in M70. Once distrusted, users will be prevented from loading these resources. See https://g.co/chrome/symantecpkicerts for more information. aws-sdk-2.212.1.min.js:47 POST https://dynamodb.ap-northeast-1.amazonaws.com/ 400 (Bad Request) handleRequest 1-2

該当のソースコード

Javascript

1<!DOCTYPE html> 2 3<html> 4<head> 5 <script src="https://sdk.amazonaws.com/js/aws-sdk-2.212.1.min.js"></script> 6<script type="text/javascript"> 7 8AWS.config.update({ 9 region: "ap-northeast-1", 10 endpoint: "https://dynamodb.ap-northeast-1.amazonaws.com", 11 accessKeyId: "[MY_AccessKey]", 12 secretAccessKey: "[My_SecretAccessKey]" 13}); 14 15var dynamodb = new AWS.DynamoDB(); 16var docClient = new AWS.DynamoDB.DocumentClient(); 17console.log("0"); 18</script> 19</head> 20 21<body> 22<script> 23 24var params = { 25 TableName: 'IoT_test1', 26 ExpressionAttributeNames:{ "#y": "year" }, 27 ExpressionAttributeValues:{':val': 1980}, 28 KeyConditionExpression: '#yr >= :val'//検索対象が満たすべき条件を指定 29}; 30console.log("1"); 31docClient.query(params, function(err, data){ 32 if(err){ 33 console.log("1-2"); 34 console.log(err); 35 }else{ 36 console.log("1-3"); 37 data.Items.forEach(function(person, index){ 38 console.log(person.name);//1980年以前の受賞者の名前 39 }); 40 } 41}); 42</script> 43</body> 44

試したこと

下記項目は、何度も確認したので、間違いないです。
region: "ap-northeast-1",
endpoint: "dynamodb.ap-northeast-1.amazonaws.com",
accessKeyId: "[MY_AccessKey]",
secretAccessKey: "[My_SecretAccessKey]"

補足情報(FW/ツールのバージョンなど)

テーブルには、既にデータが入っていることは、webアクセスで確認しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

もしかして、以下の2つの項目の値を [MY_~] という値のままでChromeを開いて動作確認していませんか?

javascript

1accessKeyId: "[MY_AccessKey]", 2secretAccessKey: "[My_SecretAccessKey]"

これらの項目は、プログラムからAWSに接続するためのIDとパスワードのようなものです。
[MY_~] となっているところを、AWSのコンソール上で作成した実際のaccessKeyID/secretAccessKeyに書き換えると、もしかすると動作するかもしれません

追記

LocalのDynamoDBを作成して、それに対してスクリプトを実行したのですが、接続できないようなんです。

DynamoDBローカルを実行したということでしょうか。もし、そうでしたら、DynamoDBローカルを実行するときに

bash

1$ java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb 2Initializing DynamoDB Local with the following configuration: 3Port: 8000

のようなコマンドを実行し、その時のログが表示されていると思います。

JavaScript上の接続先(endpoint)設定で

javascript

1 endpoint: "https://dynamodb.ap-northeast-1.amazonaws.com",

となっているところを、DynamoDBローカルのアドレス(locahost:DynamoDBローカルのポート番号)となるよう次のように変更してみてください。

javascript

1 endpoint: "http://localhost:8000",

投稿2018/04/13 00:00

編集2018/04/17 11:30
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

runa

2018/04/17 07:26

回答、ありがとうございます。 AWSのサイトが取得したそれぞれのIDを書き込んでます。 それでも、アクセスできません。 LocalのDynamoDBを作成して、それに対してスクリプトを実行したのですが、接続できないようなんです。 根本的な何かが間違っていると思うですが、それがわかりません。
runa

2018/04/18 08:12

LocalのDynamoDBを起動するために java -Djava.library.path=.\DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb と入力すると こんな画面で止まってますが、これが正常なのでしょうか? (画像ファイルの投稿方法がわからなかったので、コピペしました) D:\DynamoDB\dynamodb_local_latest>java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb Initializing DynamoDB Local with the following configuration: Port: 8000 InMemory: false DbPath: null SharedDb: true shouldDelayTransientStatuses: false CorsParams: *
退会済みユーザー

退会済みユーザー

2018/04/18 08:32 編集

その状態で正常に起動していると思います。 その状態は、DynamoDBローカルが起動し、入力待ちになっている状態です。 DynamoDBローカルに何かデータを投入したり、検索したりすると、何かしらのログが出力されていくと思います。 回答に追記したとおり、endopoint を http://localhost:8000 に変更して、試してみてください。
runa

2018/04/18 08:46

AWSの使い方のところにあった MoviesJavaScript.html をディスクトップにダウンロードして実行します。 で。ブラウザでオープンすると、画面は表示されまずが、 「Table Operations」の「List Tables」をクリックすると 画面には、 Unable to list tables: { "message": "Network Failure", "code": "NetworkingError", "time": "2018-04-18T08:42:28.066Z", "region": "us-west-2", "hostname": "localhost", "retryable": true } F12キーを押して表示させた consoleには、下記のエラーが表示されてしまいます。 -------------- Failed to load http://localhost:8000/: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header has a value 'null' that is not equal to the supplied origin. Origin 'null' is therefore not allowed access. -------------- MoviesJavaScript.htmlの内容は <html> <head> <script src="https://sdk.amazonaws.com/js/aws-sdk-2.7.16.min.js"></script> <script type="text/javascript"> AWS.config.update({ region: "us-west-2", // The endpoint should point to the local or remote computer where DynamoDB (downloadable) is running. endpoint: 'http://localhost:8000', /* accessKeyId and secretAccessKey defaults can be used while using the downloadable version of DynamoDB. For security reasons, do not store AWS Credentials in your files. Use Amazon Cognito instead. */ accessKeyId: "fakeMyKeyId", secretAccessKey: "fakeSecretAccessKey" }); -----------<抜粋>
退会済みユーザー

退会済みユーザー

2018/04/18 09:01

> AWSの使い方のところにあった > MoviesJavaScript.html これを入手したページのURLはどこでしょうか? ローカルでの試し方などが書いていると思うので、そのページを読んで解決できないでしょうか。
runa

2018/04/18 09:20

URLは https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/GettingStarted.JavaScript.html です。 このページの下方にある掲載がある↓からダウンロードしました。 試し方の記載は見つからないんです。 -------------------------------------------------------------------------------------- 手順を実行する代わりに完全なバージョンの JavaScript チュートリアルを実行する場合は、以下の操作を行います。 MoviesJavaScript.zip ファイルをダウンロードします。 アーカイブから MoviesJavaScript.html ファイルを抽出します。 エンドポイントを使用するよう MoviesJavaScript.html ファイルを変更します。 MoviesJavaScript.html ファイルを実行します。 --------------------------------------------------------------------------------------
退会済みユーザー

退会済みユーザー

2018/04/18 09:32

そちらのページを見ると、ブラウザからDynamoDBローカルに接続するために「CORS を有効にするには」という手順が必要そうです。
runa

2018/04/19 08:35

自PCに DynamoDBをセットアップして、自PCからのアクセスなので、CORSは不要だと思ったのですが、必要なのでしょうか?
退会済みユーザー

退会済みユーザー

2018/04/19 09:28

必要です。そのページはDynamoDBローカルを使ったチュートリアルなので、従ってください、 「CORS を有効にするには」の手順1でブラウザを設定したあと、手順2でDynamoDBを起動する時に --cors オプションを指定するといいようです。 java -Djava.library.path=.\DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb --cors "*"
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問