2021/02/22

Amazon S3 のSDKで書かれたコードで Alibaba Cloud OSS を操作できるか試してみたよ!

Alibaba Cloud OSS(Object Storage Service) は部分的に S3 APIとの互換性があるとしています。

基本的なバケットの一覧取得やオブジェクトのアップロード、ダウンロード、ACLの付与などをAWS SDK for Python (Boto3) を使って同じコードで動作するか簡単に実験してみました。

詳細な対応に関しては Seamlessly migrate data from Amazon S3 to Alibaba Cloud OSS をご覧ください。

Compatible S3 operations

バケット操作:

  • Delete Bucket
  • Get Bucket (list objects)
  • Get Bucket ACL
  • Get Bucket lifecycle
  • Get Bucket location
  • Get Bucket logging
  • Head Bucket
  • Put Bucket
  • Put Bucket ACL
  • Put Bucket lifecycle
  • Put Bucket logging

オブジェクト操作:

  • Delete Object
  • Delete Objects
  • Get Object
  • Get Object ACL
  • Head Object
  • Post Object
  • Put Object
  • Put Object Copy
  • Put Object ACL

マルチパート操作:

  • Abort Multipart Upload
  • Complete Multipart Upload
  • Initiate Multipart Upload
  • List Parts
  • Upload Part
  • Upload Part Copy

今回書いたコードは簡単ですがこちらにあります。


S3用とOSS用で少しだけ変えないといけない部分があるので、それぞれ用にコードを分けています。
差分はこんな感じです。今回のポイントはこの差分の部分ですね。
endpoint_url の追加と profile の追加で実現可能でした。

S3とOSSのBoto3コード差分

認証情報は .aws/credentials .aws/config を使います。

.aws/credentials

[default]
aws_access_key_id = AWSのアクセスキー
aws_secret_access_key = AWSのシークレット

[alibaba]
aws_access_key_id = Alibaba Cloudのアクセスキー
aws_secret_access_key = Alibaba Cloudのシークレット

 .aws/config

[default]
region = ap-northeast-1

[alibaba]
region = ap-northeast-1 

ちなみに S3 と OSS はほ同じ様な機能がありますが、管理コンソールの雰囲気の違いはこんな感じです

S3

image

image


OSS

Alibaba Cloud OSS のバケットリスト

Alibaba Cloud OSS のバケット詳細画面

1.バケット一覧の取得

まず最初にバケット一覧の取得をしてみました。

for bucket_list in s3.buckets.all():
    print(bucket_list.name)

以下のような結果が返ってきました。

Boto3でOSSのバケットリストを出力

コンソールを見に行くと同様のバケットがあるのでバケット一覧の取得は問題ないようです。

Alibaba Cloud OSS のバケットリスト

2.オブジェクトアップロード

次にACLを設定してのオブジェクトアップロードをしてみました。

bucket.upload_file(KEY,UPLOAD_FILE,ExtraArgs={'ACL': 'public-read'})
obj = bucket.Object(UPLOAD_FILE)

ヘッダーが x-amz-XXXX としてリクエストが飛びますが、問題なくOSSへのアップロードは出来ました。

Boto3でOSSへオブジェクトアップロードのログ


アップロード確認

S3

Boto3でS3へオブジェクトアップロード

Boto3でS3へオブジェクトアップロード

OSS

Boto3でOSSへオブジェクトアップロード

3.オブジェクトダウンロード

アップロードしたファイルを名前をつけてダウンロードしてみました。

bucket.download_file(UPLOAD_FILE,DOWNLOAD_FILE)

問題なくリクエストは実行されファイルがダウンロードされました。

Boto3でOSSからオブジェクトダウンロード

Boto3でOSSからオブジェクトダウンロード


今回は簡単に AWS SDK for Python (Boto3) を使って Alibaba Cloud OSS の基本的な操作ができるか試してみました 。
互換APIと言う事だったので特殊な事をしない基本的な部分は大丈夫そうですね。

事例などがあまり無かったので試してみましたが参考になれば幸いです。

2021/02/09

Alibaba Cloud PolarDB のリソース自動運用機能(スケールアップ / スケールダウン)を実験してみたよ!

Alibaba Cloud PolarDB のオートスケール(スケールアップ / スケールダウン)を実験してみたよ!

クラウドでよく使うオートスケールはインスタンスの増減(スケールアウト / スケールイン)のイメージ月用ですよね

実は Alibaba Cloud PolarDB の Auto Scaling 機能はインスタンスの増減と拡大・縮小(スケールアップ / スケールダウン)にも対応していました。Database Autonomy Service(DAS)という、運用支援系のサービスと連動して設定されるので気付いてなかったのですが、今回ちょっとさわってみました。

結果としては以下の様な形でうまく動作していました、設定などを少し見ていきます。

image

Polarオートスケール

ちなみに Database Autonomy Service(DAS)は結構優秀なサービスなので是非さわって見て欲しいです
基本は無料ですし(オプション機能は有料です)

設定画面は以下の様なシンプルなものになっています。

「Automatic Scale-out」「Automatic Scale-In」という設定項目名になっていて分かりにくいのですが、 「Maximum Specifications」とある様にインスタンススペックの上限指定をすることでスケールアップ・スケールダウンも自動で行われる様になります。

Auto Scaling Config

DASのオートスケール設定画面

詳細に関してはこちらのドキュメントもご確認ください。

Database Autonomy Service (DAS) provides the auto scaling feature. During peak hours, DAS automatically scales up a database instance to handle traffic peaks and ensure business stability. DAS monitors the CPU utilization of the database instance in real time. If the CPU utilization per unit of time decreases, DAS automatically scales down the database instance. This topic describes how to enable the auto scaling feature.

Database Autonomy Service (DAS) > Autonomy Center > Auto scaling


さて、オートスケールの実験をするには、ある程度の負荷をDBに掛ける必要があるのでその準備もします。

MySQL公式のサンプルデータ「world_x」を Data Management Service (DMS)を使ってインポート

MySQL公式のサンプルデータ「world_x」を Data Management Service (DMS)を使ってインポート

さらに Data Management Service (DMS)の機能「Test Data Generate」を使って100万レコード増やしました。
この機能、テーブル構造に合わせてそれっぽいデータが作られるのでテスト用途には便利でよく使ってます。

Data Management Service (DMS)の機能「Test Data Generate」を使って100万レコード増やしました。

100万レコードに増えています

「Skip when encountering data conflicts」の設定があるせいか100万レコードに少し足りませんが、そこそこのデータ量が出来たのでちょっと無駄にDBに負荷をかけて見たいと思います。
※100万レコードくらいだと余裕なので実際はもっとデータを増やしました

Data Management Service (DMS)も個人的には地味に利用頻度が高いサービスです。
こいつも基本は無料ですし・・・(オプション機能は有料です)
コンソールからSQLファイルを読み込ませたりクエリを実行できるのは楽ですね、


冒頭にも出したオートスケールの結果を見ていきたいと思います。

image

17:00 ~ 19:00 の期間内でスケールアウト -> スケールアップ -> スケールダウン -> スケールインが順次自動で実行されています。
Quiescent Period がクールダウンタイムになるので30分間隔で次ステップの実行が行われていますね。

1個目のイベントは17:13で自動スケールアウトで読み取り専用ノードが追加されています。

PolarDB 自動スケールアウト

2個目のイベントは30分後の17:43で自動スケールアップで 2Core,8GiB から 4Core,16GiB にスペックアップされています。

PolarDB 自動スケールアップ

3個目のイベントは負荷が下がってから30分後の18:16で自動スケールダウンで 4Core,16GiB から 2Core,8GiB にスペックダウンされています。

PolarDB 自動スケールダウン

4個目のイベントは約30分後の18:50で自動スケールインで読み取り専用ノードが削除されています。

PolarDB 自動スケールイン


今回は簡単ですが Alibaba Cloud PolarDB と Database Autonomy Service(DAS)によるリソース自動運用の動作検証でした。
Data Management Service (DMS)を含め、それぞれのサービスは特徴的な部分もイロイロあるので新ためて紹介をしていきたいな。

2020/10/13

Alibaba Cloud OSS で 日中間クロスリージョンレプリケーションが出来る様になりました!

お久し振りです

今回は Alibaba Cloud のオブジェクトストレージサービスに関しての記事になります。

ついに Alibaba Cloud Object Storage Service で待望の中国本土 <=> グローバルのクロスリージョンレプリカが出来る様になった様なので試してみました❗️

手順は下記をご覧ください。

Alibaba Cloud OSS の管理コンソールからレプリケーション元のバケットを選択して、 Cross-Region Replication の設定を行います。

今回は東京リージョンのバケットをソースとして選択しました。

Alibaba Cloud OSS 日中間クロスリージョンレプリカ設定

Cross-Region Replication の Enableを選択します。

Alibaba Cloud OSS 日中間クロスリージョンレプリカ設定

Source Region Japan (Tokyo) から Destination Regionで中国本土のリージョンが選べるようになってますね😋

これが出来る様になるのを待っていた人は多いと思いますね!

Alibaba Cloud OSS Cross-Region Replication 設定画面

上海のOSSバケットを指定して設定してみます。

Alibaba Cloud OSS 日中間クロスリージョンレプリカ

色々と注意事項が出ます。
Cross-region replication と Transfer acceleration 両方の課金が発生するぞ
越境する設定だから法律に準拠してねというメッセージですね。

今回は問題ないデータなのでEnableを選択します。

Note: 
The cross-region replication task you created incurs fees for both cross-region replication and transfer acceleration. 
For more information about the fees, see Cross-region replication and Transfer acceleration.

The task you created may involve the cross-border transfer of data
 (including data transfer between mainland China and other regions outside mainland China, and between different countries). 
Ensure that you follow the applicable laws of the country or region where the data is located.

Alibaba Cloud OSS 日中間クロスリージョンレプリカ設定時の注意文

無事に設定が有効化されました!

あとはレプリケーションが実行されるかを確認するだけです

Alibaba Cloud OSS 日中間クロスリージョンレプリカ設定完了画面

バケットの作成日よりも前にソースバケットにアップロードされたファイルが同期されて存在しているのがわかりますね。

無事にクロスリージョンレプリケーションが動作して、日本のバケットから中国本土(上海)のバケットにファイルが転送されました!

また、逆パターンの中国本土から日本へも設定が可能です!


Alibaba Cloud OSS 日中間クロスリージョンレプリカ結果画面

ちなみにソースバケットは以下です。


Alibaba Cloud OSS 日中間クロスリージョンレプリカソースバケット

Alibaba Cloud Object Storage Service 中国本土と東京の間でレプリケーションが無事にできました❗️


中国本土とのクロスリージョンレプリカが出来る様になったことで、また活用の幅が広がったのではないかなと思いますね😋


2020/08/12

Cloudflare Access で簡単に認証機能を付けてみました!

Cloudflare も使っているのですが、Cloudflare Access を使ったことがなかったので簡単にさわってみました。

https://www.cloudflare.com/teams-pricing/

Cloudflare Access もいくつかの機能があるのですが、今回は以下の様な構成でAlibaba Cloud Object Storage Service (OSS) に置いてある静的コンテンツにログイン認証機能を簡単に付けてみます。 

なおオリジンは別に Amazon S3 でも良いと思います。

Cloudflare Access で簡単に認証機能を付けてみました!

「Access を使えば、VPN を使用せず内部のアプリケーションに安全にアクセスできます。9月1日まで無料です。」 と表示されているので「Access を有効にする」を選択します。 

image.png

「Access Premium」でアクティブユーザー数を「5」にすると書いてあるのでやってみます。 

・・・課金発生しないか若干ドキドキしますが、現在の請求額: $0.00を信じて進みます😌

Cloudflare Access のプラン選択

合計支払い額が$0.00 なのを確認し購入します。 

image.png

画面が遷移して Cloudflare Access のセットアップが出来る様になっているので「始めましょう」を選択して先に進みます。 

image.png

自動的にログイン ページ ドメインが発行されます。 

「cloudflareaccess.com」より前のサブドメイン部分は変更可能です。 

image.png

ログイン ドメインの設定は完了です。次に Access ポリシーを設定します。 image.png

今回は以下の様な画像を表示するだけのページに対して Access ポリシーを設定してみます。 Image by pencil parker from Pixabay 

image.png

アプリケーションドメイン:保護する対象のサイト 

ポリシー:メールアドレスやIP、トークンなどのパラメータを使って接続の許可・拒否を設定します。 

今回はメールアドレスを許可対象として設定します。 

Cloudflare Access のポリシー設定画面

アプリケーションドメインに設定したURLへアクセスすると、先程と違って以下の様な認証画面が表示される様になります。 

ここで先程のポリシー設定で指定したメールアドレスを入力してSend me a codeを選択します。 

Cloudflare Access の認証画面

入力したアドレス宛に以下の様なメールが届きます。 

リンクをクリックするか6桁のコードを画面に入力するか選べる様です。 

今回はコードを使ってみます。 

image.png

6桁のコードを入力してSign inを選択します。 

Cloudflare Access の認証画面(Pin)

コードが正常に認証されればサイト(画像)にアクセスができました! 

image.png


一つもコードを書いたりせずに、簡単にログイン認証機能を追加できるとは思いませんでした。

 Argo Tunnel などの他の機能も試していきたいと思います。

2020/07/27

Alibaba Cloud Domains でドメインを購入してみました!

今回は Alibaba Cloud Domains でドメインを購入してみたので、その手順を残します。
ちょっと独特と言うか事前準備として所有者情報を作成しておく必要があります。

事前準備

Alibaba Cloud Domains での所有者情報の入力

Alibaba Cloud Domains

「Registrant Profiles」 の Common Template で 「Create Registrant Profile」を選択します。

Profile Type備考
Common Template.com, .net, .tech などの一般的なドメインを取得する場合はこちらを使用します。
CNNIC Template.cn, .中国, .公司, .网络 などの CNNIC registry でのドメインの取得を行なう場合
こちらが必要です。

Create domain name registrant profiles

image.png

電話番号はハイフン無しです。 image.png

以下のメッセージが出れば登録成功です。 image.png


ドメイン所有者のメールアドレスの確認

Profile 一覧に作成したテンプレートが表示されるので Verify Nowを選択します。 Alibaba Cloud Domains

Submitを選択します。 ※+のエイリアスのアドレスは弾かれます。 image.png

OKを選択します。 

image.png

Verification linkをクリックします。 image.png

Email verification successfully!と表示されれば成功です! image.png

Alibaba Cloud のコンソール上でも「Email Verification」で該当のアドレスがVerification successfulと表示されています。 image.png

「Registrant Profiles」 のRegistrant Emailが確認済みのメールアドレスであれば、Verification Successfulと表示されます。
ここまで出来ていればプロファイルの作成も完了です。 Alibaba Cloud Domains プロフィール

Set as default を選択します。 image.png

Confirmを選択します。 image.png

Defaultと表示されればドメイン購入時にデフォルトでこのプロファイルが使用されます。 image.png

ドメインの購入

「Domain Names」 から Purchaseを選択します。 image.png


以下の様な画面が表示されるのでFind A Domainで欲しいドメインを検索します。 image.png


対象のドメインの「Add to cart」を選択して、カートアイコンを選択します。 

image.png

購入対象のチェックボックスをチェックして購入期間を選択します、Buy Nowを選択すると確認画面に遷移します。 

image.png


選択したドメインの情報と事前に登録したデフォルトプロファイルが表示されています。
「I have read, understood and accepted」にチェックを入れます。
 Place Orderを選択すると購入画面に遷移します。 Alibaba Cloud Domains の購入


「Payment Method」を選択してPurchaseを選択すると支払いが実行されます。 image.png


ちなみに「Place Order を選択してから Purchase を選択するまで」 はPending Paymentと言うステータスになっています。 image.png


Congratulations, purchase successfullyと表示されれば購入成功です。 image.png


購入したドメインの確認

Alibaba Cloud Domains の「Domain Names」に購入したドメインが表示されます。 image.png

なお、Alibaba Cloud Domains で購入したドメインは、自動的にAlibaba Cloud DNS にも登録されています。 image.png

ちなみにWHOISの登録者情報は以下のようにAlibaba側で代行して公開されます。 Alibaba Cloud Domains での Whois 代行

おわりに

今回は Alibaba cloud のコンソールでドメインを購入することができるのか検証してみました。
手順としては所有者情報の登録を事前にすると言うことが分かっていれば特に詰まることはないかと思います。
.cn や .集团 など中国のドメイン取得も何処かで試したみたいと思います。

Amazon S3 のSDKで書かれたコードで Alibaba Cloud OSS を操作できるか試してみたよ!

Alibaba Cloud OSS(Object Storage Service) は部分的に S3 APIとの互換性がある としています。 基本的なバケットの一覧取得やオブジェクトのアップロード、ダウンロード、ACLの付与などを AWS SDK for Pyth...