Object Storage Service (OSS) SDK for Goを使用してリクエストを開始するには、アクセス資格情報を設定する必要があります。 Alibaba Cloudサービスは、アクセス資格情報を使用してID情報とアクセス権限を確認します。 認証と承認の要件に基づいて、さまざまなタイプのアクセス資格情報を選択できます。 このトピックでは、一時的なアクセス資格情報と長期的なアクセス資格情報を設定する方法について説明します。
前提条件
OSS SDK for Goがインストールされています。 詳細については、「インストール」をご参照ください。
アクセス資格情報
次のタイプのアクセス資格情報から選択できます。
一時的なアクセス資格情報: OSSにアクセスするアプリケーションの一時的なアクセス許可など、高いセキュリティが必要なシナリオでは、一時的なアクセス資格情報を使用することを推奨します。 一時アクセス資格情報には、アクセスの有効期間があります。 これにより、アクセス資格情報の漏洩を防ぐことができます。 一時的なアクセス資格情報は、過度のアクセス許可によって引き起こされるセキュリティリスクを防ぐために、きめ細かいアクセス制御をサポートします。 詳細については、「一時的なアクセス資格情報の使用」をご参照ください。
長期アクセス資格情報: セキュリティを確保するため、長期アクセス資格情報を使用しないことを推奨します。 利便性を必要とするシナリオでは、長期アクセス資格情報により、長期間の複数の更新が不要になります。 Alibaba Cloudアカウントのセキュリティを確保するため、3か月ごとに長期アクセス資格情報を変更することを推奨します。 長期アクセス資格情報が漏洩した場合、または使用されなくなった場合は、長期アクセス資格情報を削除または無効にして、セキュリティリスクを防ぐことができます。 詳細については、「長期アクセス資格情報の使用」をご参照ください。
使用上の注意
このトピックでは、シェルコマンドを実行して、macOS、Linux、Windowsなどのさまざまなオペレーティングシステムで環境変数を設定する方法について説明します。 環境変数を適切に設定すると、コマンドラインで起動したプログラムは必要な設定を正しく認識できます。 統合開発環境 (IDE) でプログラムを起動する場合は、このトピックを参照して、IDEで環境変数を個別に設定する必要があります。 このようにして、プログラムは期待どおりに実行できます。
一時的なアクセス資格情報の使用
OSS SDK for Goを使用してOSSリソースに一時的にアクセスする場合は、次のいずれかの方法を使用して一時的なアクセス資格情報を設定できます。
Security Token Service (STS) の一時的なアクセス資格情報の設定: 特定の期間内にOSSにアクセスする場合は、STSを使用して一時的なアクセス資格情報を取得できます。 STSによって提供される一時的なアクセス資格情報は、RAMユーザーのAccessKeyペアを公開しません。 これにより、OSSリソースへのアクセスが安全になります。
RAMロールの設定: Alibaba CloudアカウントのRAMユーザーまたは別のAlibaba CloudアカウントのRAMユーザーにOSSリソースへのアクセス権限を付与する場合は、そのRAMユーザーのRAMロールを設定できます。
ECS (Elastic Compute Service) インスタンスのRAMロールの設定: ECSインスタンスからOSSリソースにアクセスする場合、ECSインスタンスのRAMロールを使用してOSSリソースにアクセスできます。 RAMロールをECSインスタンスにアタッチして、STSから取得した一時的な資格情報を使用してインスタンスからOSSリソースにアクセスできます。 STSの一時的なアクセス資格情報は自動的に生成および更新されます。 アプリケーションは、インスタンスメタデータURLを使用してSTSの一時的なアクセス資格情報を取得できます。
STSの一時的なアクセス資格情報の設定
RAM ユーザーを作成します。
RAMユーザーの作成方法の詳細については、「RAMユーザーの作成」をご参照ください。
AliyunSTSAssumeRoleAccess
ポリシーをRAMユーザーにアタッチします。詳細については、「RAM ユーザーへの権限の付与」をご参照ください。
RAMユーザーを使用してSTSのAssumeRole操作を呼び出し、一時的なアクセス資格情報を取得します。
詳細については、「AssumeRole」をご参照ください。
STSによって提供される一時的なアクセス資格情報を設定します。
環境変数
STSによって提供される一時的なアクセス資格情報を使用して、環境変数を設定します。
macOS
ターミナルを開きます。
以下のコマンドを実行します。
nano ~/.bash_profile
STSから取得した一時的なアクセス資格情報 (AccessKeyId、AccessKeySecret、およびSecurityToken) をファイルの最後に追加します。
export OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH **** エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn **** export OSS_SESSION_TOKEN=CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙˙∂ ∂ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt ****
Ctrl
+X
を押し、Y
を押してファイルを保存し、Enter
を押してファイルを閉じます。変更を有効にするには、次のコマンドを実行します。
source ~/.bash_profile
次のコマンドを実行して、環境変数の設定を確認します。
エコー $OSS_ACCESS_KEYID エコー $OSS_ACCESS_KEY_SECRET エコー $OSS_SESSION_トークン
サンプル成功応答:
STS.NV5ZCwphFSXqscqUHAKbH **** IrVTNZNy5yQelTETg0cZML3TQn **** CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙∂ ∂ ˙+ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + ****
Linux
ターミナルを開きます。
以下のコマンドを実行します。
sudo vim /etc/profile
STSから取得した一時的なアクセス資格情報 (AccessKeyId、AccessKeySecret、およびSecurityToken) をファイルの最後に追加します。
export OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH **** エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn **** export OSS_SESSION_TOKEN=CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙˙∂ ∂ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt ****
[Esc]
を押して編集モードを終了します。 次に、:wq
と入力し、enter
を押してファイルを保存して閉じます。変更を有効にするには、次のコマンドを実行します。
source /etc/profile
次のコマンドを実行して、環境変数の設定を確認します。
エコー $OSS_ACCESS_KEYID エコー $OSS_ACCESS_KEY_SECRET エコー $OSS_SESSION_トークン
サンプル成功応答:
STS.NV5ZCwphFSXqscqUHAKbH **** IrVTNZNy5yQelTETg0cZML3TQn **** CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙∂ ∂ ˙+ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + ****
Windows
コマンドラインインターフェイス (CLI) を開きます。
次のコマンドを実行して、STSから取得した一時的なアクセス資格情報 (AccessKeyId、AccessKeySecret、およびSecurityToken) を設定します。
set OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH **** セットOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn **** set OSS_SESSION_TOKEN=CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ð ∂ ∂ 3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt ****
変更を有効にするには、次のコマンドを実行します。
setx OSS_ACCESS_KEY_ID "% OSS_ACCESS_KEY_ID %" setx OSS_ACCESS_KEY_SECRET "% OSS_ACCESS_KEY_SECRET %" setx OSS_SESSION_TOKEN "% OSS_SESSION_TOKEN %"
次のコマンドを実行して、環境変数の設定を確認します。
エコー % OSS_ACCESS_KEY_ID % エコー % OSS_ACCESS_KEY_SECRET % エコー % OSS_SESSION_TOKEN %
サンプル成功応答:
STS.NV5ZCwphFSXqscqUHAKbH **** IrVTNZNy5yQelTETg0cZML3TQn **** CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙∂ ∂ ˙+ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + ****
STSが提供する一時的なアクセス資格情報を環境変数から取得します。
パッケージメイン import (import (import) "fmt" 「github.com/aliyun/aliyun-oss-go-sdk/oss」 "os" ) func main() { // 環境変数から取得した一時的なAccessKeyペアとセキュリティトークンを使用して、アクセス資格情報を設定します。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // Create an OSSClient instance. // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } }
コードにアクセス資格情報を埋め込む
警告コードにアクセス資格情報を埋め込むと、セキュリティの問題が発生する可能性があります。 アクセス資格情報が漏洩した場合、攻撃者はアクセス資格情報を使用してOSSリソースにアクセスできます。これにより、データが失われる可能性があります。 セキュリティを確保するために、環境変数からアクセス資格情報を取得するなど、より安全な方法を使用することを推奨します。
パッケージメイン import (import (import) "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main(){ // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 // STSから取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 // STSから取得したセキュリティトークンを指定します。 client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret", "yourAccessKeySecret", oss.SecurityToken("yourSecurityToken")) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } }
RAMロールの設定
次のコマンドを実行して、
alibabacloud_credentials
をインストールします。pip install alibabacloud_資格情報
RAM ユーザーの AccessKey ペアを取得します。
詳細については、「RAMユーザーのAccessKeyペアの作成」をご参照ください。
重要RAMユーザーのAccessKeyペアが漏洩するリスクを減らすために、3か月以上使用されているAccessKeyペアをローテーションすることを推奨します。 長期間使用されていないRAMユーザーのAccessKeyペアを無効にして削除することを推奨します。
移行先RAMロールのRamRoleArnを取得します。
説明RamRoleArnは、RAMロールのAlibaba Cloud Resource Name (ARN) で、想定されるRAMロールのIDです。 形式: acs:ram ::$ accountID:role/$roleName。 $accountID: Alibaba CloudアカウントのID。 $roleName: RAMロールの名前。
詳細については、「RAMロールに関する情報の表示」をご参照ください。
RAMユーザーのAccessKeyペアとRAMロールのRamRoleArnを一時的なアクセス資格情報として設定します。
環境変数
取得したRAMユーザーのAccessKeyペアとRAMロールのRamRoleArnを使用して環境変数を設定します。
macOS
ターミナルを開きます。
以下のコマンドを実行します。
nano ~/.bash_profile
RAMユーザーのAccessKeyペアとRAMロールのRamRoleArnをファイルの最後に追加します。
エクスポートOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D **** エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn **** export OSS_STS_ROLE_ARN=acs:ram::17464958 ********:role/ossststest
Ctrl
+X
を押し、Y
を押してファイルを保存し、Enter
を押してファイルを閉じます。変更を有効にするには、次のコマンドを実行します。
source /etc/profile
次のコマンドを実行して、環境変数の設定を確認します。
エコー $OSS_ACCESS_KEYID エコー $OSS_ACCESS_KEY_SECRET エコー $OSS_STS_ROLE_ARN
サンプル成功応答:
LTAI4GDty8ab9W4Y1D **** IrVTNZNy5yQelTETg0cZML3TQn **** acs:ram::17464958 *********: role/ossststest
Linux
ターミナルを開きます。
以下のコマンドを実行します。
sudo vim /etc/profile
RAMユーザーのAccessKeyペアとRAMロールのRamRoleArnをファイルの最後に追加します。
エクスポートOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D **** エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn **** export OSS_STS_ROLE_ARN=acs:ram::17464958 ********:role/ossststest
[Esc]
を押して編集モードを終了します。 次に、:wq
と入力し、enter
を押してファイルを保存して閉じます。変更を有効にするには、次のコマンドを実行します。
source /etc/profile
次のコマンドを実行して、環境変数の設定を確認します。
エコー $OSS_ACCESS_KEYID エコー $OSS_ACCESS_KEY_SECRET エコー $OSS_STS_ROLE_ARN
サンプル成功応答:
LTAI4GDty8ab9W4Y1D **** IrVTNZNy5yQelTETg0cZML3TQn **** acs:ram::17464958 *********: role/ossststest
Windows
CLIを開きます。
次のコマンドを実行して、RAMユーザーのAccessKeyペアとRAMロールのRamRoleArnを設定します。
セットOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D **** セットOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn **** セットOSS_STS_ROLE_ARN=acs:ram::17464958 ********:role/ossststest
変更を有効にするには、次のコマンドを実行します。
setx OSS_ACCESS_KEY_ID "% OSS_ACCESS_KEY_ID %" setx OSS_ACCESS_KEY_SECRET "% OSS_ACCESS_KEY_SECRET %" setx OSS_STS_ROLE_ARN "% OSS_STS_ROLE_ARN %"
次のコマンドを実行して、環境変数の設定を確認します。
エコー % OSS_ACCESS_KEY_ID % エコー % OSS_ACCESS_KEY_SECRET % エコー % OSS_STS_ROLE_ARN %
サンプル成功応答:
LTAI4GDty8ab9W4Y1D **** IrVTNZNy5yQelTETg0cZML3TQn **** acs:ram::17464958 *********: role/ossststest
環境変数からRAMユーザーのAccessKeyとRAMロールのRamRoleArnのペアを取得します。
パッケージメイン import (import (import) "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" 「github.com/aliyun/credentials-go/credentials」 "os" ) type Credentials struct { AccessKeyId文字列 AccessKeySecret文字列 SecurityToken文字列 } 型defaultCredentialsProvider struct { Credential。Credential } func (資格情報 * 資格情報) GetAccessKeyID() string { 認証情報を返します。AccessKeyId } func (資格情報 * 資格情報) GetAccessKeySecret() string { 認証情報を返します。AccessKeySecret } func (資格情報 * 資格情報) GetSecurityToken() string { 証明書を返します。SecurityToken } func (defBuild * defaultCredentialsProvider) GetCredentials() oss.Credentials { id,_ := defBuild.cred.GetAccessKeyId() secret,_ := defBuild.cred.GetAccessKeySecret() token,_ := defBuild.cred.GetSecurityToken() return &Credentials { AccessKeyId: * id、 AccessKeySecret: * secret、 SecurityToken: * token、 } } func NewCredentialsProvider(credential credentials.Credential) defaultCredentialsProvider { defaultCredentialsProviderを返します { cred: 資格情報、 } } func main(){ config := new(credentials.Config) 。 // 一時的なアクセス資格情報のタイプをram_role_arnに設定します。 SetType("ram_role_arn") 。 // 環境変数からRAMユーザーのAccessKey IDとAccessKey secretを取得します。 SetAccessKeyId(os.Getenv("OSS_ACCESS_KEY_ID")) 。 SetAccessKeySecret(os.Getenv("OSS_ACCESS_KEY_SECRET")) 。 // 環境変数からRAMロールのARNを取得します。 RAMロールのARNは、想定されるロールのIDです。 形式: acs:ram ::$ accountID:role/$roleName。 SetRoleArn(os.Getenv("OSS_STS_ROLE_ARN")) 。 // さまざまなトークンを区別するためにロールセッション名を指定します。 SetRoleSessionName("Role_Session_Name") 。 // (オプション) STSトークンの権限を指定します。 SetPolicy("") 。 // (オプション) STSトークンの有効期間を指定します。 SetRoleSessionExpiration(3600) arnCredential, err := credentials.NewCredential(config) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } プロバイダー:= NewCredentialsProvider(arnCredential) client, err := oss.New("oss-cn-hangzhou.aliyuncs.com", ", ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } }
コードにアクセス資格情報を埋め込む
警告コードにアクセス資格情報を埋め込むと、セキュリティの問題が発生する可能性があります。 アクセス資格情報が漏洩した場合、攻撃者はアクセス資格情報を使用してOSSリソースにアクセスできます。これにより、データが失われる可能性があります。 セキュリティを確保するために、環境変数からアクセス資格情報を取得するなど、より安全な方法を使用することを推奨します。
パッケージメイン import (import (import) "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" 「github.com/aliyun/credentials-go/credentials」 "os" ) type Credentials struct { AccessKeyId文字列 AccessKeySecret文字列 SecurityToken文字列 } 型defaultCredentialsProvider struct { Credential。Credential } func (資格情報 * 資格情報) GetAccessKeyID() string { 認証情報を返します。AccessKeyId } func (資格情報 * 資格情報) GetAccessKeySecret() string { 認証情報を返します。AccessKeySecret } func (資格情報 * 資格情報) GetSecurityToken() string { 証明書を返します。SecurityToken } func (defBuild * defaultCredentialsProvider) GetCredentials() oss.Credentials { id,_ := defBuild.cred.GetAccessKeyId() secret,_ := defBuild.cred.GetAccessKeySecret() token,_ := defBuild.cred.GetSecurityToken() return &Credentials { AccessKeyId: * id、 AccessKeySecret: * secret、 SecurityToken: * token、 } } func NewCredentialsProvider(credential credentials.Credential) defaultCredentialsProvider { defaultCredentialsProviderを返します { cred: 資格情報、 } } func main(){ config := new(credentials.Config) 。 // 一時的なアクセス資格情報のタイプをram_role_arnに設定します。 SetType("ram_role_arn") 。 // RAMユーザーのAccessKeyペアを指定します。 SetAccessKeyId("AccessKeyId") 。 SetAccessKeySecret("AccessKeySecret") 。 // RAMロールのARNを指定します。これは、想定するRAMロールのIDです。 形式: acs:ram ::$ accountID:role/$roleName。 SetRoleArn("acs:ram::15069 ************: role/ram-oss-test") 。 // さまざまなトークンを区別するためにロールセッション名を指定します。 SetRoleSessionName("Role_Session_Name") 。 // (オプション) STSトークンの権限を指定します。 SetPolicy("") 。 // (オプション) STSトークンの有効期間を指定します。 SetRoleSessionExpiration(3600) arnCredential, err := credentials.NewCredential(config) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } プロバイダー:= NewCredentialsProvider(arnCredential) client, err := oss.New("oss-cn-hangzhou.aliyuncs.com", ", ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } }
ECS インスタンスの RAM ロールを設定
次のコマンドを実行して、
alibabacloud_credentials
をインストールします。go ge t github.com/aliyun/credentials-go/credentials
RAMロールをECSインスタンスにアタッチします。
詳細については、「ECSインスタンスへのインスタンスRAMロールのアタッチ」をご参照ください。
ECSインスタンスのRAMロールを使用して、一時的なアクセス資格情報を設定します。
パッケージメイン import (import (import) "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" 「github.com/aliyun/credentials-go/credentials」 "os" ) type Credentials struct { AccessKeyId文字列 AccessKeySecret文字列 SecurityToken文字列 } タイプCredentialsProvider struct { Credential。Credential } func (資格情報 * 資格情報) GetAccessKeyID() string { 認証情報を返します。AccessKeyId } func (資格情報 * 資格情報) GetAccessKeySecret() string { 認証情報を返します。AccessKeySecret } func (資格情報 * 資格情報) GetSecurityToken() string { 証明書を返します。SecurityToken } func (defBuild CredentialsProvider) GetCredentials() oss.Credentials { id,_ := defBuild.cred.GetAccessKeyId() secret,_ := defBuild.cred.GetAccessKeySecret() token,_ := defBuild.cred.GetSecurityToken() return &Credentials { AccessKeyId: * id、 AccessKeySecret: * secret、 SecurityToken: * token、 } } func NewStaticCredentialsProvider(credential credentials.Credential) CredentialsProvider { return CredentialsProvider { cred: 資格情報、 } } func main(){ config := new(credentials.Config) 。 // 一時的なアクセス資格情報のタイプをecs_ram_roleに設定します。 SetType("ecs_ram_role") 。 // (オプション) ロール名を指定します。 ロール名を指定しない場合、OSSは自動的にロール名を生成します。 リクエスト数を減らすために、ロール名を指定することを推奨します。 SetRoleName("RoleName") ecsCredential, err := credentials.NewCredential(config) if err! =nil { リターン } プロバイダー:= NewStaticCredentialsProvider(ecsCredential) client, err := oss.New("oss-cn-hangzhou.aliyuncs.com", ", ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Printf("client :%# v\n", client) }
長期アクセス資格情報の使用
OSS SDK for Goを使用してアプリケーションまたはサービスのOSSリソースに長期間アクセスする場合は、次の手順を実行して長期アクセス資格情報を設定できます。
OSSリソースに長期間アクセスする場合は、RAMユーザーのAccessKeyペアを使用してOSSリソースにアクセスできます。
RAMユーザーのAccessKeyペアの設定
RAM ユーザーの AccessKey ペアを取得します。
詳細については、「RAMユーザーのAccessKeyペアの作成」をご参照ください。
重要3か月以上使用されているRAMユーザーのAccessKeyペアをローテーションすることを推奨します。 長期間使用されていないRAMユーザーのAccessKeyペアを無効にして削除することを推奨します。 これにより、AccessKeyペアがリークするリスクが軽減されます。
RAMユーザーのAccessKeyペアを設定します。
環境変数
環境変数を設定します。
macOS
ターミナルを開きます。
以下のコマンドを実行します。
nano ~/.bash_profile
RAMユーザーのAccessKeyペアをファイルの最後に追加します。
エクスポートOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D **** エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn ****
Ctrl
+X
を押し、Y
を押してファイルを保存し、Enter
を押してファイルを閉じます。変更を有効にするには、次のコマンドを実行します。
source ~/.bash_profile
次のコマンドを実行して、環境変数の設定を確認します。
エコー $OSS_ACCESS_KEYID エコー $OSS_ACCESS_KEY_SECRET
サンプル成功応答:
LTAI4GDty8ab9W4Y1D **** IrVTNZNy5yQelTETg0cZML3TQn ****
Linux
ターミナルを開きます。
以下のコマンドを実行します。
sudo vim /etc/profile
RAMユーザーのAccessKeyペアをファイルの最後に追加します。
エクスポートOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D **** エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn ****
[Esc]
を押して編集モードを終了します。 次に、:wq
と入力し、enter
を押してファイルを保存して閉じます。変更を有効にするには、次のコマンドを実行します。
source /etc/profile
次のコマンドを実行して、環境変数の設定を確認します。
エコー $OSS_ACCESS_KEYID エコー $OSS_ACCESS_KEY_SECRET
サンプル成功応答:
LTAI4GDty8ab9W4Y1D **** IrVTNZNy5yQelTETg0cZML3TQn ****
Windows
CLIを開きます。
次のコマンドを実行して、RAMユーザーのAccessKeyペアを設定します。
セットOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D **** set OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn ****
変更を有効にするには、次のコマンドを実行します。
setx OSS_ACCESS_KEY_ID "% OSS_ACCESS_KEY_ID %" setx OSS_ACCESS_KEY_SECRET "% OSS_ACCESS_KEY_SECRET %"
次のコマンドを実行して、環境変数の設定を確認します。
エコー % OSS_ACCESS_KEY_ID % エコー % OSS_ACCESS_KEY_SECRET %
サンプル成功応答:
LTAI4GDty8ab9W4Y1D **** IrVTNZNy5yQelTETg0cZML3TQn ****
環境変数からRAMユーザーのAccessKeyペアを取得します。
パッケージメイン import (import (import) "fmt" 「github.com/aliyun/aliyun-oss-go-sdk/oss」 "os" ) func main() { // 環境変数から取得したRAMユーザーのAccessKeyペアを使用して、アクセス資格情報を設定します。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // OSSClientインスタンスを作成します。 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } }
コードにアクセス資格情報を埋め込む
警告コードにアクセス資格情報を埋め込むと、セキュリティの問題が発生する可能性があります。 アクセス資格情報が漏洩した場合、攻撃者はアクセス資格情報を使用してOSSリソースにアクセスできます。これにより、データが失われる可能性があります。 セキュリティを確保するために、環境変数からアクセス資格情報を取得するなど、より安全な方法を使用することを推奨します。
パッケージメイン import (import (import) "fmt" 「github.com/aliyun/aliyun-oss-go-sdk/oss」 "os" ) func main() { // Create an OSSClient instance. // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 // yourAccessKeyIdをRAMユーザーのAccessKey IDに設定し、yourAccessKeySecretをRAMユーザーのAccessKey secretに設定します。 client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret") if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } }
次に何をすべきか
アクセス資格情報を設定した後、OSSClientインスタンスを初期化する必要があります。 詳細については、「初期化」をご参照ください。