アマゾンAPI(AWS)の利用制限について

このQ&Aのポイント
  • アマゾンAPI(AWS)の利用制限について調べています。IPアドレスごとに毎秒1コールを超えない制限があるようですが、参照元はレンタルサーバーのIPなのか、ユーザーのIPなのかを知りたいです。
  • 自分で擬似的にAPIの動作を調べてみたところ、file_get_contentsされた側の$_SERVER['REMOTE_ADDR']にはレンタルサーバーのIPが入っていました。もしレンタルサーバーのIPがカウントされる場合、同時に複数人がページを見ていた場合に問題が発生する可能性があるため、対策を実装したいと思っています。
  • アマゾンAPI(AWS)の利用制限について詳細を教えていただきたく、ご指導をお願いします。
回答を見る
  • ベストアンサー

アマゾンAPI(AWS)の利用制限について

アマゾンAPI(AWS)の利用制限について アマゾンAPIの利用制限で、「IPアドレスごとに毎秒1コールを超えないアクセス」があるのですが、 http://developer.amazonwebservices.com/connect/thread.jspa?messageID=41215 レンタルサーバーに設置したPHPプログラム内の file_get_contents からAPIを参照した場合、参照元としてカウントされるのは設置したレンタルサーバーのIPなのでしょうか? それとも、ページを参照したユーザーのIPアドレスなのでしょうか? 自前で $_SERVER['REMOTE_ADDR'] を使用して、APIの動作を擬似的に真似て調べてみたのですが、 file_get_contents された側の $_SERVER['REMOTE_ADDR'] には、 file_get_contents したレンタルサーバーのIPが入っていました。 レンタルサーバーのIPがカウントされる場合、同時に複数人がページを見ていた場合にアウトですので、スタック等を各自実装する。という感じなのでしょうか? 宜しくご指導をお願い申し上げます。

  • PHP
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

アマゾンにアクセスしたIPアドレスですので、お書きの条件だと、サーバーのIPアドレスになります。

関連するQ&A

  • 【 REMOTE_HOSTの値の取得方法について 】

    既製のCGIを設置するのがイッパイイッパイの 初心者ですm(__)m REMOTE_HOSTの値を取得して表示させたいのですが 当方レンタル中のサーバーの初期設定では取得できず 下記の如くの手順で取得するように表示してありましたが どうにも理解できず困っております。 下記の「Perl内」とは何処の事を指しているのか アドバイスを頂きたくお願い申し上げます。 ****以下、該当サーバーの説明文引用***** 【 REMOTE_HOSTの値の取得方法について 】 レンタルサーバーの処理速度を優先して、初期状態ではIPアドレスからDNSの参照をしないように設定している為、REMOTE_HOSTの値を取得したい場合はPerl内で下記の記述をして下さい。 $addr = $ENV{'REMOTE_ADDR'}; $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr;

    • ベストアンサー
    • Perl
  • Twitter APIが利用できない!?

    Twitter APIを利用してWebアプリケーションを作成しようとしています。手始めにローカル開発環境でタイムラインを取得したのですが、レンタルサーバに移すと取得できません。 <?php require_once( 'twitteroauth.php' ); (OAuth認証でアクセストークン等を取得する処理は省略) $TwitterOAuth = new TwitterOAuth('コンシューマキー', 'コンシューマシークレット', 'アクセストークン', 'アクセスシークレット'); // タイムラインを取得 $timeLine = $TwitterOAuth->get('statuses/home_timeline'); (以下、表示処理は省略) ?> PHPを使ってこのように書きました。(今回はライブラリとして、TwitterOAuthを使わせていただきました。) ローカル開発環境でこのプログラムを動かすと、正常に動作しました。 しかし、これをレンタルサーバに移すと、動かなくなります・・・ 以下、状況をまとめました。 ・色々試してみるとレンタルサーバ上においても、OAuth認証はうまくいっている模様。  アクセストークン等は取得できていた。 ・タイムラインの取得処理だけが失敗して、NULLが入ってしまっている。   → Twitter APIへのアクセスができない? ・しかし、$TwitterOAuth->post('statuses/update', array('status' =>'テストツイート'));は  うまくいく。   → 試してみると、GETメソッドのものだけが失敗する模様 ・ライブラリを他の物にして、同じ機能を実装しても同様のことが起こります。  ライブラリ無しで書いてみても同じでした。ローカルではうまくいくのに・・・ ・利用しているレンタルサーバは、さくらインターネットのレンタルサーバ。  もう1つは個人の方が運営しているレンタルサーバ。  どちらもライブラリの動作環境は満たしている。 php.iniの問題でしょうか。 それともTwitter APIの利用できないサーバがあるのでしょうか。 初心者なりに色々考えてみましたがわかりませんでした。 どうしたらよいでしょうか。

    • ベストアンサー
    • PHP
  • 自分のPCからのアクセス判定(ログインせずに判定

    <困っていること> ・カウンタを設置したのですが、自分でアクセスした場合もカウントアップされてしまいます <やりたいこと> ・「自分のPCからアクセスした場合」という条件判定を、ログイン等せずに行いたい <試したこと> ・$_SERVER['REMOTE_ADDR'];で条件分けしてみたのですが、IPが固定でないため(?)、再起動等すると、アドレスを書き変える必要があり、結構手間です <質問> ・何か良い方法はないでしょうか? ・掲示板でIPアドレス制限とかあるかと思いますが、あれはどうやっているのでしょうか?

    • ベストアンサー
    • PHP
  • PerlからPHPに移植したアクセス制限

    下記は、CGIファイルから持ってきたスクリプトをPHPに変換してみたものです。 エラーが出るの出ます-> Parse error: syntax error, unexpected '/', expecting ')' in /home/users/1/raindrop.jp-5247423/web/tsukushinbo/bbs/bbs_header.php on line 32 どう修正すれば教えていただきたいです。 <?php #----------------# # ホスト名取得 # #----------------# function get_host(){ $host = $_SERVER{'REMOTE_HOST'}; $addr = $_SERVER{'REMOTE_ADDR'}; if($gethostbyaddr){ if ($host === "" || $host === "$addr") { $host === gethostbyaddr(pack("C4", split(/\./, $addr)), 2); $host === gethostbyaddr(pack($addr)); } } if($host === "") { $host = $addr; } } ?>

    • ベストアンサー
    • PHP
  • simplexml_load_fileのエラー

    AmazonのAPIを使ったWebサイトを作っていて、simplexml_load_fileを使って外部サーバのXMLを読み込もうとしています。 ローカル・サーバ1ではうまくいきますが、サーバ2ではI/O warning : failed to load external entity となり読み込めません。 3つのサーバで使用しているプログラムは全く同じです。 PHPのバージョン、SimpleXMLのRevisionは下記の通り。 ローカル:5.2.5、1.151.2.22.2.35 サーバ1:5.2.9、1.151.2.22.2.46 サーバ2:5.2.9、1.151.2.22.2.46 調べていると、XML文字列の中に実体参照等パースエラーとなる文字が含まれているとこのようなエラーが出るとのことでしたが、該当するような文字列はありませんし、同じプログラムでも別のサーバであれば取得できるのでその可能性は考え辛いですが、この場合の対処方法として、file_get_contentsで一度文字列として受け取ってから、simplexml_load_stringでパースするとあったので、それも試しました。 しかし、simplexml_load_fileであれば数秒で取得できるものが、file_get_contentsだと4分以上かかりました。 できればsimplexml_load_fileで行いたいのですが、上記のような違いが出る可能性として考えられることは何かありますでしょうか。

    • 締切済み
    • PHP
  • [PHP] AITalkの音声合成APIで困った

    file_get_contents の返り値が false で困っています!! Docomoさんがエーアイさんの音声合成APIを提供しています. エーアイの音声合成APIの中でも,「SSML」を利用しようとしています. ・ドコモさんのHP https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_docs_id=70 ・SSMLについて https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_docs_id=71#tag01 SSMLを利用しようとPHPで実装して実行するも file_get_contents でエラーになってしまいます. (エラー:failed to open stream: HTTP request failed! ) コードは以下のように記述しました. <?php // コード書く際に参考にしたサイト // http://www.d-labo.net/laboratory/php/7001.php // http://stackoverflow.com/questions/9412650/how-to-fix-411-length-required-error-with-file-get-contents-and-the-expedia-xml function post($url, $data) { if (!ini_get('allow_url_fopen')) throw new Exception("Not Allowed URL Open!"); //headersは仕様通りに記述したつもり $headers = array( 'Content-Type:application/ssml+xml', 'Accept:audio/L16', 'Content-Length:'.sprintf("%d",strlen($data)) ); //methodは必ずPOSTと仕様書にあった $stream = stream_context_create(array('http' => array( 'method' => 'POST', 'header' => implode("\n",$headers), 'content' => $data ))); //XXX: file_get_contentsの返り値が必ず false になってしまう return file_get_contents($url, false, $stream); } ////// usage sample ////// 申し訳ないのですが,APIKEYを第三者に提供することはできません. try { $url = 'https://api.apigw.smt.docomo.ne.jp/aiTalk/v1/textToSpeech?APIKEY=XXXXXXXXXX'; $xml = '<?xml version="1.0" encoding="utf-8" ?><speak version="1.1"><voice name="nozomi">エーアイの音声合成エンジンによる音声です。</voice><break time="1000ms" /><voice name="seiji">エーアイの音声合成エンジンによる音声です。</voice></speak>'; $hoge = post($url,$xml); var_dump($hoge); } catch (Exception $e) { var_dump($e); } ?> 以上のコードが記述されたファイル(text_to_voice.php)をターミナルで実行 $ php text_to_voice.php Warning: file_get_contents(https://api.apigw.smt.docomo.ne.jp/aiTalk/v1/textToSpeech?APIKEY=XXXXXXXXX): failed to open stream: HTTP request failed! in text_to_voice.php on line 26 bool(false) 以上になります.どうやったら file_get_contents の返り値が false じゃなくなるのか知りたいです. よろしくお願い致します. 画像にはリクエストヘッダーの内容とAPIのURLが記述されており, 画像にあるのを参照しました.

    • ベストアンサー
    • PHP
  • TwitterのAPI制限について

    OAuthを使ってログインしたいと思い色々調べているのですが APIの実行回数の制限についてよく分かりません。 例えば下記のコードでログイン用のURLを取得しています。 TwitterのAPIの制限が1時間に150回となっているのですが 下記のログインURL呼び出しのリクエストはAPI実行回数制限にカウントされるのか? カウントされるのであれば サーバーIP等での実行回数制限になるのか クライアントIP等での実行回数制限になるのか どちらなのでしょうか? サーバーIPでの制限であればまともにサービス展開できませんし 調べてみたのですが確認できませんでした。 ご存知の方がいらっしゃいましたらご教授下さい。 よろしくお願いします。 <? session_start(); require_once("oauth/twitteroauth/twitteroauth.php"); if($_SESSION['oauth_token']===NULL && $_SESSION['oauth_token_secret']===NULL){ $consumer_key = "xxxxxxxxxxxxxxxxxxxxxx"; $consumer_secret = "xxxxxxxxxxxxxxxxxxxxxx"; // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret); // callbackURLを指定してRequest tokenを取得 $tok = $to->getRequestToken("http://xxxxxxxxx/callback.php"); // セッションに保存 $_SESSION['request_token']=$token=$tok['oauth_token']; $_SESSION['request_token_secret'] = $tok['oauth_token_secret']; // サインインするためのURLを取得 $url = $to->getAuthorizeURL($token); print "<a href=\"$url\">サインイン</a>"; } else{ //サインインしていればヘッダーを出力 include("user_header.php"); } ?>

    • ベストアンサー
    • PHP
  • Amazon APIをPHPでアクセスすると403エラーになる

    Amazon APIをPHPでアクセスすると403エラーになる Amazon API(Product Advertising API)を利用しようと、アフィリエイトと共にアカウント作成し、 アクセスキーとシークレットキーを取得しました。 そして、WEBで色々検索し、署名認証用のPHPプログラムを発見して、ローカルでテストしているのですが、403エラーが表示され、動作してくれません・・・。 hash_hmacに関しては、PHPのバージョンが5.12以下ですので、下記サイトの関数を代用しています。 http://www.revulo.com/blog/20090811.html //認証用関数URL http://amazon.ringoon.jp/rest_test/pa_sig.txt ========================================= プログラム require_once("pa_sig.php"); $public_key = "***********"; $url = "http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=".$public_key."&Operation=ItemLookup&ItemId=0679722769&ResponseGroup=ItemAttributes,Offers,Images,Reviews&Version=2009-01-06&Timestamp=2009-01-01T12:00:00Z&AssociateTag=**********"; $url = add_signature($url); $contents=file_get_contents($url); print_r($contents); ========================================= 出力結果 Warning: fopen(http://webservices.amazon.co.jp/onca/xml?AWSAccessKeyID=AKIAJSK7CGT4HO2QTPQA&AssociateTag=aimtaku-22&ItemId=4886487467&Operation=ItemLookup&ResponseGroup=small&Servie=AWSECommerceService&Timestamp=2010-10-04T05%3A33%3A42Z&Version=2009-01-06&Signature=d8d9T3g7ThM%2B%2BJKGVsXsCgaqxoAigqAuH7BDhA1mXgM%3D) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in **************\a_login.php on line 37 ========================================= 開発環境 WinXP PHP5.02 Apache 2.0.58 宜しくお願い致します。

    • 締切済み
    • PHP
  • file_get_contents()エラー

    mysqlで構築したデータベースに画像を格納しようとしています。 ローカル環境では問題無く動作していたのですが、お名前.comのレンタルサーバーでやってみるとエラーがどうしてもでます。 レンタルサーバーの種類は【共用サーバーSD】です。 DB接続の部分のDB名、ユーザー名、パスワード等はきちんと変更しました。 【エラーの内容】 Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in /********/*****/****/****touroku.php on line 24 調べてみると、レンタルサーバーではfile_get_contents()が使えない場合があり、設定を変更剃る必要があるという記事を目にしたのですがつまづいています。 file_get_contents()を使えるようにするにはどうしらいいでしょうか。 @を前に付けてエラーをでなくするということもできるとは思うのですが、できれば@を使わずに対処できればと考えています。 今回のようなケースについては、ローカルできちんと動作していたということは、レンタルサーバー側での設定の問題なのかなと考えているのですが、いかがでしょうか。 対処法、アドバイスをいただけないでしょうか。よろしくお願いします。

    • ベストアンサー
    • PHP
  • multiRequest関数で楽天API使用方法

    multiRequest関数にて楽天含め2つのAPIを使用したいのですが、同時にmultiRequest関数で叩くと file_get_contents関数(楽天のコロンを取り除く為)でエラー表示が起きてしまいます。 以下、エラー表示部分 Warning: file_get_contents(<?xml version="1.0" encoding="UTF-8"?><Response><header:Header xmlns:header="http://...・・・・・・<reviewAverage>4.81</reviewAverage><pointRate>1</pointRate><pointRateStar in C:\xxxxx\xxxxx\search.php on line 306 以下、記述内容 $data = array( "http://api.rakuten.co.jp/rws/3.0/rest?developerId=xxxxx&operation=ItemSearch&version=2010-09-15&keyword=$word", "http://productsearch.linksynergy.com/productsearch?token=xxxxxx&keyword=$link_keyword", ); var_dump($data); $r = multiRequest($data); $data = file_get_contents($r[0]); $data= str_replace('itemSearch:ItemSearch', 'itemsearch', $data); $xml = simplexml_load_string($r); print_r($xml); ?>               ここまで。 尚、$xml = simplexml_load_string($r); の上2行を削除し、$xml = simplexml_load_string($r[1]); とした場合はもう1つのAPIの取得は出来ました。 また今、$dataと$rの変数が誤ってる事は存じております。 恐らく、file_get_contents関数の記述がおかしいのかとは思いますが、何がおかしいのか分かりません。 もしかしたら単純な事なのかもしれませんが、調べても全く出てこない為、分かる方がおりましたら、何卒お力添え頂けると助かります。

    • 締切済み
    • PHP

専門家に質問してみよう