RAMユーザーに権限を付与し、RAMユーザーのAccessKeyペアを使用してOSSリソースにアクセスできます。 OSSリソースにアクセスする場合、より高いアクセスセキュリティを確保するために、Alibaba CloudアカウントではなくRAMユーザーのAccessKeyペアを使用することを推奨します。
ステップ1: RAMユーザーの作成
Alibaba Cloudアカウントまたは管理者権限を持つRAMユーザーを使用して、RAMコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで、[ユーザーの作成] をクリックします。
[ユーザーの作成] ページの [ユーザーアカウント情報] セクションで、次のパラメーターを設定します。
ログオン名: ログオン名の長さは最大64文字で、英数字、ピリオド (.) 、ハイフン (-) 、アンダースコア (_) を使用できます。
表示名: 表示名の長さは最大128文字です。
タグ: アイコンをクリックして、タグキーとタグ値を入力します。 RAMユーザーに1つ以上のタグを追加できます。 これにより、タグに基づいてRAMユーザーを管理できます。
説明ユーザーの追加をクリックして、一度に複数の RAM ユーザーを作成できます。
[アクセスモード] セクションで、[OpenAPIアクセス] を選択し、[OK] をクリックします。
[コピー] をクリックして、RAMユーザーのAccessKeyペアを保存します。
ステップ2: RAMユーザーにオブジェクトをアップロードする権限を付与する
オブジェクトをアップロードする権限を付与するカスタムポリシーを作成します。
左側のナビゲーションウィンドウから、
を選択します。[ポリシー] ページで ポリシーの作成 をクリックします。
ポリシーの作成 ページで、[JSON] タブをクリックします。 ポリシードキュメントを入力して、examplebucketバケットのexampledirディレクトリにオブジェクトをアップロードする権限をロールに付与します。 次のサンプルコードは、ロールに権限を付与する方法を示しています。
警告以下は参考例です。 ユーザーに過度の権限を与えないように、要件に基づいてきめ細かいRAMポリシーを構成する必要があります。 詳細なRAMポリシーを設定する方法の詳細については、「RAMポリシーの一般的な例」トピックの「例9: RAMまたはSTSを使用してユーザーにOSSリソースへのアクセスを許可する」セクションをご参照ください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:PutObject" 、 "Resource": "acs:oss:*:*:examplebucket/exampledir/*" } ] }
[次へ] をクリックしてポリシー情報を編集します。
[基本情報] セクションで、名前 を [RamTestPolicy] に設定し、[OK] をクリックします。
カスタムポリシーをRAMユーザーにアタッチします。
左側のナビゲーションウィンドウで、
を選択します。ユーザー ページで、カスタムポリシーをアタッチするRAMユーザーを見つけます。
[ユーザー] ページで、RAMユーザーの [操作] 列の 権限の追加 をクリックします。
権限の追加 パネルで、カスタムポリシー タブをクリックします。 [RamTestPolicy] ポリシーを選択します。
[OK] をクリックします。
手順3: RAMユーザーのAccessKeyペアを使用してオブジェクトをOSSにアップロードする
次のJavaコードは、exampletest.txtという名前のオブジェクトをD :\\ localpath
パスからexamplebucketという名前のバケットのexampledirディレクトリにアップロードする方法の例を示しています。
com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.mo del.PutObjectRequestをインポートします。java.io. ファイルをインポートします。publicクラスRAMAccessKeySample {
public static void main(String[] args) {
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
String endpoint = "yourEndpoint";
// プロジェクトコードにアクセス資格情報を保存しないことをお勧めします。 そうしないと、アクセス資格情報が漏洩する可能性があります。 その結果、アカウント内のすべてのリソースのセキュリティが侵害されます。 この例では、アクセス資格情報は環境変数から取得されます。 サンプルコードを実行する前に、環境変数を設定する必要があります。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
// PutObjectRequestオブジェクトを作成します。
// examplebucketなどのバケット名、exampledir/exampleobject.txtなどのオブジェクトのフルパス、およびアップロードするローカルファイルのフルパスを指定します。 バケット名をフルパスに含めないでください。
// デフォルトでは、ローカルファイルのパスを指定しないと、サンプルプログラムが属するプロジェクトのローカルパスからファイルがアップロードされます。
PutObjectRequest putObjectRequest = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", new File("D :\\ localpath\\examplefile.txt"));
// 次のコードは、オブジェクトのストレージクラスとアクセス制御リスト (ACL) を設定する方法の例を示しています。
// ObjectMetadata metadata=新しいObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata (メタデータ);
// ローカルファイルをアップロードします。
ossClient.putObject(putObjectRequest);
// Shut down the OSSClient instance.
ossClient.shutdown();
}
}
他のプログラミング言語のOSS SDKの例の詳細については、以下のトピックを参照してください。
オブジェクトのアップロード後にURLを取得する方法の詳細については、「署名付きURLでオブジェクトを共有する」をご参照ください。