カテゴリー : Amazon Web Services

[Amazon Redshift] TEXT 型は VARCHAR(256) に変換される

Amazon Redshift でサイズの大きい文字列を扱いたい場合 TEXT 型を使うべきではなさそうです。

公式ドキュメント によると TEXT 型は VARCHAR(256) に変換されるそうなので、MySQL や PostgreSQL の感覚で使ってしまうと想定していたよりも短い文字列しか扱えなかったということになってしまいそうです。

TEXT 型

TEXT 列を使用して Amazon Redshift テーブルを作成できますが、この列は最大 256 文字の可変長値を受け入れる VARCHAR(256) 列に変換されます。

僕は Redshift に保存するデータが log だった場合、そこそこサイズが長くなりそうだけど正確には分からない column は VARCHAR(1024) で追加しています。

Note

CREATE TABLE 構文では、文字データ型の MAX キーワードをサポートします。以下に例を示します。

CREATE TABLE test(col1 VARCHAR(MAX));

MAX 設定は列幅を定義します。CHAR の場合は 4096 バイトであり、VARCHAR の場合は 65535 となります。

MAX も使えるみたいですが、ほとんどの場合 65535 byte も使わないんじゃないでしょうか。

この記事で伝えたかったことは、「思い込みで TEXT 型を使おうとするのではなく、ちゃんと公式ドキュメントを読みましょう」ということでした。

[Amazon CloudSearch] [*Deprecated*: Use the outer message field] Validation error for field ‘xxx’: Invalid codepoint 1C

Amazon CloudSearch で検索ワードとしてインポートする JSON データの一部で下記のようなエラーが発生して、インポートできませんでした。

エラーメッセージ

[*Deprecated*: Use the outer message field] Validation error for field 'title_ja': Invalid codepoint 1C

原因のダメ文字は \u001c だったので、これを削除すれば正常に JSON データを読み込ませることが出来ました。

フォーム入力からデータベースに保存された値なのだけど、この文字どうやって入ったのかな・・・?


参考情報

AWS Developer Forums: Which codepoints are disallowed in text …

Guide to Formatting Your Data in SDF for Amazon CloudSearch : Articles & Tutorials : Amazon Web Services

Scalaで正規表現: ユニコードの空白文字29種類にマッチするか試してみた – Qiita

これは備忘録 ASCII文字コード

[AWS] EC2インスタンスが stopping のままのときの対応方法

AWS EC2 のインスタンスが stopping のままのときは、Force Stop しまくればいずれ Stopped になります。

Q: EBS-backed インスタンスが「stopping」のままのときは、どうすればよいですか?
仮想サーバホストにおいて問題が発生した際などにインスタンスは “stopping” 状態で固まることがあります。インスタンスを強制停止することでこれに対処することが出来るかもしれません。これはEC2 コマンドラインツールや AWS Management Console を通じて行っていただけます。

コマンドラインツール

ec2-stop-instances [インスタンス ID] –force

AWS マネジメントコンソール

インスタンスを右クリックし、ドロップダウンリストから “Stop” を選択します。 (Forced Stop が行われる旨が表示されます。)

注:どちらの場合でも、二度強制停止を試みていただく必要があるかもしれません。

インスタンスを強制停止できない場合は、代替のインスタンスを開始できることがあります。詳しくは、インスタンスの停止に関するトラブルシューティング を参照してください。それでも問題を解決できない場合は、AWS フォーラム から、または AWS サポートケースをオープンしてお知らせください。迅速な問題解決のために、サポートへご連絡いただく際には、既に行った手順をお知らせ頂けますようお願いいたします。

・[引用元]:Amazon EC2 インスタンスに関するよくある質問 | アマゾン ウェブ サービス(AWS 日本語)

[AWS] 各サービスが稼働しているか確認するサイト

AWS (Amazon Web Services) の各サービスが稼働しているか確認するサイト

AWS Service Health Dashboard(公式)

Found AS Status

たまにサービス死ぬので、常にそういうケースに備えておかないといけませんね・・・

[AWS] aws s3 sync ./upload_dir s3://xxx –region ap-northeast-1

aws-cli で command line 上から S3 へファイルアップロードしようとしたところエラーが発生しました。

% aws s3 sync ./upload_dir s3://backetname

エラーメッセージ

A client error (PermanentRedirect) occurred when calling the ListObjects operation:
The bucket you are attempting to access must be addressed using the specified endpoint.
Please send all future requests to this endpoint.

デフォルト設定で region を設定しておらず、オプションでも未指定だったのが原因でした。

aws s3 sync ./upload_dir s3://backetname --region ap-northeast-1

–region ap-northeast-1 とか使ってる S3 のリージョンを指定することでアップロードできました。

[AWS] S3 の Regions(リージョン)一覧

Amazon S3 の Regions 名(us-east-1 とか)が管理コンソールから確認しても分からなかった。

ここから確認できたけど、管理画面にも載せておいて欲しい。

Regions and Endpoints – Amazon Web Services

Region name Region Endpoint Location constraint Protocol
US Standard * us-east-1

You can use one of the following two endpoints:

  • s3.amazonaws.com (Northern Virginia or Pacific Northwest)

  • s3-external-1.amazonaws.com (Northern Virginia only)

(none required) HTTP and HTTPS
US West (Oregon) Region us-west-2 s3-us-west-2.amazonaws.com us-west-2 HTTP and HTTPS
US West (Northern California) Region us-west-1 s3-us-west-1.amazonaws.com us-west-1 HTTP and HTTPS
EU (Ireland) Region eu-west-1 s3-eu-west-1.amazonaws.com

EU or eu-west-1

HTTP and HTTPS
Asia Pacific (Singapore) Region ap-southeast-1 s3-ap-southeast-1.amazonaws.com ap-southeast-1 HTTP and HTTPS
Asia Pacific (Sydney) Region ap-southeast-2 s3-ap-southeast-2.amazonaws.com ap-southeast-2 HTTP and HTTPS
Asia Pacific (Tokyo) Region ap-northeast-1 s3-ap-northeast-1.amazonaws.com ap-northeast-1 HTTP and HTTPS
South America (Sao Paulo) Region sa-east-1 s3-sa-east-1.amazonaws.com sa-east-1 HTTP and HTTPS

Amazon Mobile App Distribution Program 登録方法

Android アプリストアへアプリを登録するために、「Amazon Mobile App Distribution Program」へ登録しました。

Amazon Android アプリストア

Amazon Mobile App Distribution Program の登録方法

「Amazon Mobile App Distribution Program」への登録は下記のリンクからできます。

Amazon Mobile App Distribution Program – Amazon.com

次に、登録手順をカンタンに書いていきます。

1. Profile Information

住所とか電話番号など必要な情報を記入します。

2. Moble App Distribution Agreement

これも規約に目を通して、チェック入れて次へ進みます。

3. Payment

Do you plan to monetize apps?
Methods may include charging for apps or selling in-app items or displaying ads from Amazon Mobile Ad Network.

銀行口座とか入力しないといけないのですが、とりあえず No にしました。

マネタイズしたくなったときは、あとから変更できると思います。

4. Tax Identity

Do you plan to monetize apps?
Methods may include charging for apps or selling in-app items or displaying ads from Amazon Mobile Ad Network.

こちらも有料アプリではないので、スキップしました。

AmazonアプリストアへAndroidアプリを登録する

あとは、他のAppleやGoogle Playストアなどと同じように、アプリの情報を記載したり、apk ファイルやスクリーンショットなどをアップロードしていくだけです。

困ったら、FAQを確認してみるといいかもしれませんね。

まとめ

登録までにステップが多い気もしますが、Google Playストア用に開発したアプリをほぼそのまま別のマーケットに載せれるのはいいですね。

[Amazon] CloudFront の設定方法・手順メモ

Amazon CloudFront の設定方法や手順、参考リンクなどをメモ。

■ 公式ドキュメント

Amazon CloudFront(コンテンツ・ストリーミング配信サービス) | アマゾン ウェブ サービス (AWS 日本語) はてなブックマーク - Amazon CloudFront(コンテンツ・ストリーミング配信サービス) | アマゾン ウェブ サービス (AWS 日本語)

Amazon CloudFront FAQs | アマゾン ウェブ サービス(AWS 日本語) はてなブックマーク - Amazon CloudFront FAQs | アマゾン ウェブ サービス(AWS 日本語)

■ CloudFrontの設定手順が分かりやすいスライド

Awsmeister cloudfront20120611-slideshare用 from yasuhiro araki

■ CloudFront custom origin + (LAMP + WordPress & Really Static plugin)

CloudFront custom origin – 雑多なメモ Wiki版 はてなブックマーク - CloudFront custom origin - 雑多なメモ Wiki版

■ 最近の参考になる記事

今日からサポートされたCloudFrontの動的URLサポートのこまかい話 « debiancdn はてなブックマーク - 今日からサポートされたCloudFrontの動的URLサポートのこまかい話 « debiancdn

【AWS発表】Amazon CloudFrontが動的コンテンツをサポート – Amazon Web Services ブログ はてなブックマーク - 【AWS発表】Amazon CloudFrontが動的コンテンツをサポート - Amazon Web Services ブログ

■ ちょっと古いけど良いまとめ記事

Amazon CloudFrontの使用上の注意とTipsまとめ|Media Technology Labs (MTL) : メディアテクノロジーラボ はてなブックマーク - Amazon CloudFrontの使用上の注意とTipsまとめ|Media Technology Labs (MTL) : メディアテクノロジーラボ

Origin のホスト名部分を Cloud Front で発行された「Domain Name」で差し替えて、正常にコンテンツ(画像、CSSファイルなど)が表示されることを確認します。

[Ruby on Rails] Amazon SES (Simple Email Service)の設定方法

Ruby on Rails 3.2.5 にて、Amazon SES (Simple Email Service)を使ってメール送信ができるようにする設定方法をメモ。

■ config/environments/production.rb

  # Amazon SES
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { host: 'your-domain.example.com' }
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.smtp_settings = {
    :address              => "email-smtp.us-east-1.amazonaws.com",
    :port                 => 465,
    :domain               => 'your-domain.example.com',
    :user_name            => 'XXXXXXXXXXXXXXXXXX',
    :password             => 'SGNIHinBVUSHLGHVIUSHIRHIIHFIL',
    :authentication       => :plain
  }

■ config/initializers/amazon_ses.rb

module Net
  class SMTP
    def tls?
      true
    end
  end
end

■ Gemfile

# Amazon SES
gem "aws-ses", "~> 0.4.4", :require => 'aws/ses'

drewblas/aws-ses · GitHub はてなブックマーク - drewblas/aws-ses · GitHub

以上です。

【参考】

Amazon SES SMTP Emails using Rails 3.1 in Three Easy Steps | | ReadyPulse BlogReadyPulse Blog はてなブックマーク - Amazon SES SMTP Emails using Rails 3.1 in Three Easy Steps | | ReadyPulse BlogReadyPulse Blog

EOFError error trying to use Amazon SES via SMTP with Rails 3.1.3 – Stack Overflow はてなブックマーク - EOFError error trying to use Amazon SES via SMTP with Rails 3.1.3 - Stack Overflow

Amazon SES(Simple Email Service)でメールを送ってみなイカ? | Pocketstudio.jp log3 はてなブックマーク - Amazon SES(Simple Email Service)でメールを送ってみなイカ? | Pocketstudio.jp log3

Amazon SESでメールを送ったときにGmailでvia email-bounces.amazonses.comって表示されないようにする – Startup Reality はてなブックマーク - Amazon SESでメールを送ったときにGmailでvia email-bounces.amazonses.comって表示されないようにする - Startup Reality

Amazon’s Simple Email Service on rails using aws-ses and devise – Tee Parham’s posterous はてなブックマーク - Amazon's Simple Email Service on rails using aws-ses and devise - Tee Parham's posterous

一番いいメール配信を頼む « サーバーワークス エンジニアブログ はてなブックマーク - 一番いいメール配信を頼む « サーバーワークス エンジニアブログ

[Heroku] Amazon EC2 北米リージョンで動いるので、日本からのレスポンスタイムは300msぐらい

Heroku が動いているサーバーはどこの国にあるのか調べてみると、現在は Amazon EC2 北米リージョンのみだそうです。(2012年1月7日 時点)

情報元をいくつか引用します。

HerokuはAmazon EC2で動いていますが、東京リージョンでは動きません。もちろん、太平洋を往復する数百msの遅延を気にしなければ、日本から北米リージョンのHerokuを使うことに何の問題もないわけですが、遅延は小さいに越したことはありません。静的ファイルをCDNに置くなどの工夫も少なくて済むケースがあることでしょう。

・引用元:Rails Hub情報局: Herokuは東京リージョンにいつ来るのか? はてなブックマーク - Rails Hub情報局: Herokuは東京リージョンにいつ来るのか?

Amazon EC2 East Region の Response Times をグラフ化している資料があります。

HTTP Response Time \ ms
0 to 300, (31%)
300 to 400, (15%)
400 to 500, (13%)
500 to 750, (20%)
>750, (21%)

・引用元:Cedexisという企業のMarty Kagan氏が公開した各種クラウドのレスポンスを可視化した資料

これを見ると、日本からのアクセスだとレスポンスタイムは高々、300msということが分かります。

Amazon EC2 の東京リージョンに Heroku が対応してくれると嬉しいのですが、現状でもそんなにストレス無く日本から使えるのではないかと思います。

【その他、参考】

Heroku runs on Amazon Web Services in the US East Region, which means that transfers to the S3 US Standard Region are completely free.

・引用元:Heroku | Dev Center | Uploading Files to S3 はてなブックマーク - Heroku | Dev Center | Uploading Files to S3

Amazonクラウドの大規模障害を経て、これからは「データセンターはいつか落ちる」ことがサービス設計の前提となる - Publickey はてなブックマーク - Amazonクラウドの大規模障害を経て、これからは「データセンターはいつか落ちる」ことがサービス設計の前提となる - Publickey

以上です。