ラベル Alibaba Cloud OSS の投稿を表示しています。 すべての投稿を表示
ラベル Alibaba Cloud OSS の投稿を表示しています。 すべての投稿を表示

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と言う事だったので特殊な事をしない基本的な部分は大丈夫そうですね。

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

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/06/16

Alibaba Cloud OSS にカスタムドメインを設定してCloudflareと連携させてみた

Alibaba Cloud Object Storage Service(oss) は基本的にはサービス側が提供するドメイン(aliyuncs.com)で静的コンテンツなどを展開可能ですが、やはり独自のドメインで展開したいと言う場合もあると思います。

Alibaba Cloud OSS も独自のドメインを利用することが可能なので、今回はカスタムドメインを割り当てる手順をご紹介します。

また、今回は Cloudflare で管理しているドメインがあったので Cloudflare と OSS を連携してアクセスが出来ることも一緒に確認してみようと思います。

Alibaba Cloud OSS にカスタムドメインを設定してCloudflareと連携させてみた

OSS の CNAME 割り当て

Alibaba Cloud DNS を使用している場合、CNAMEの割り当ては自動で行われるのですが、外部DNSを使用する場合は手動での割り当てが必要になります。

まずは、Alibaba cloud の管理コンソールから対象のバケットを選択し、パブリックエンドポイント(Access Over Internet)を確認します。
基本的にはバケット名.リージョンID.aliyuncs.comとなります。

Alibaba Cloud OSS のCNAME設定

確認したパブリックエンドポイントを Cloudflare の DNS に登録します。

image.png

今回はoss.xxx.comと言うサブドメインに対して Alibaba Cloud OSS を割り当てます。

Alibaba Cloud OSS のCNAME を Cloudflare DNS に設定

正常にレコードが追加されます。

image.png

カスタムドメインの設定

Alibaba cloud の管理コンソールから対象のバケットを選択し 「Transmission > Domain Names」 から Bind Custom Domain Nameを選択します。

Alibaba Cloud OSS にカスタムドメインを設定

Custom Domain Name に CNAME を割り当てたドメイン名を入力します。
※Alibaba Cloud DNS で管理している場合は、事前のCNAME割り当ては不要です。

今回はoss.xxx.comというサブドメインを使用してみます。
「Submit」を選択します。

Alibaba Cloud OSS にカスタムドメインを設定

設定が完了すると以下のような画面が表示されます。
Alibaba Cloud CDN を使用する設定や、設定したカスタムドメインで HTTPS を受けるための証明書のアップロードなどが必要ですが、今回は前段に Cloudflare が居るので不要です。
※Alibaba Cloud 内で完結する場合は設定が必要になります。

image.png

Cloudflare 経由での Alibaba Cloud OSS へのアクセス

それでは設定も出来たので Cloudflare 経由で OSS のオブジェクトにアクセスしてみたいと思います。
以前 OSS で作った静的ページがあるのでそれを流用してみます。



./webinar/index.htmlにあるファイルにアクセスしてみたいと思います。

image.png

カスタムドメインに割り当てたドメインでアクセスすると問題なくコンテンツが表示されました!
SSL証明書の情報を確認するとCloudflareの証明書が出てくることが確認できます。

Cloudflare証明書

設定も特に難しいところが無くドメインさえあれば適用できましたね!
今回は Cloudflare を使いましたので、CDN と SSL などもついてるのですが、他のDNSの場合はその辺が必要かな・・・

Alibaba Cloud の Region 増えてた

  久々に Alibaba Cloud を覗いてみたら・・・ あ、なんかリージョン増えてるわ 昨年発表していたフィリピン(マニラ)リージョン、タイ(バンコク)リージョン、韓国(ソウル)リージョン が増えていたのでちょっと現状確認してみました。 フィリピン(マニラ)リージョンの場合...