Я использую блоки данных и хочу указать список.
dbutils.fs.ls("s3://mybucket)
com.amazonaws.SdkClientException: невозможно загрузить учетные данные AWS от любого поставщика в цепочке: [BasicAWSCredentialsProvider: ключ доступаили секретный ключ имеет значение null, com.amazonaws.auth.InstanceProfileCredentialsProvider@56e2bc92: Невозможно загрузить учетные данные.
Я создаю роль IAM с использованием .net.Для создания роли IAM и профиля Instance я использовал следующий код:
var roleName = "test";
var profileName = "test";
var client = new AmazonIdentityManagementServiceClient(aws_access_key_id, aws_secret_access_key, RegionEndpoint.EUWest1);
Policy policyDoc = GeneratePolicyDocument();
List<Tag> tags = new List<Tag> { };
tags.Add(new Tag { Key = "jobposition", Value = jobPosition });
for (int i = 0; i < functionalGroups.Count; i++)
{
tags.Add(new Tag { Key = String.Format("functionalarea{0}", i), Value = functionalGroups[i] });
}
try
{
// Create a role with the trust policy
var role = client.CreateRole(new CreateRoleRequest
{
RoleName = roleName,
AssumeRolePolicyDocument = policyDoc.ToJson(),
Tags = tags
});
}
catch (Exception e)
{
Console.Write(e);
}
Policy policyDoc1 = GeneratePolicyDocument1();
// Add the access policy to the role
try
{
client.PutRolePolicy(new PutRolePolicyRequest
{
RoleName = roleName,
PolicyName = "testrole2",
PolicyDocument = policyDoc1.ToJson()
});
}
catch (Exception e)
{
Console.Write(e);
}
try
{
// Create an instance profile
client.CreateInstanceProfile(new CreateInstanceProfileRequest
{
InstanceProfileName = profileName
});
}
catch (Exception e)
{
Console.Write(e);
}
try
{
// Add the role to the instance profile
client.AddRoleToInstanceProfile(new AddRoleToInstanceProfileRequest
{
InstanceProfileName = profileName,
RoleName = roleName
});
}
catch (Exception e)
{
Console.Write(e);
}
Для создания политик я использовал следующий код:
public Policy GeneratePolicyDocument()
{
var client = new AmazonIdentityManagementServiceClient(aws_access_key_id, aws_secret_access_key, RegionEndpoint.EUWest1);
var statements = new List<Amazon.Auth.AccessControlPolicy.Statement>();
var actions = new List<ActionIdentifier>();
var resources = new List<Resource>();
var principal = new List<Principal>();
actions.Add(new ActionIdentifier("sts:AssumeRole"));
principal.Add(new Principal("123123123123"));
var statement = new Amazon.Auth.AccessControlPolicy.Statement(Amazon.Auth.AccessControlPolicy.Statement.StatementEffect.Allow)
{
Actions = actions,
Principals = principal
};
statements.Add(statement);
Policy policy = new Policy
{
Version = "2012-10-17",
Statements = statements
};
return policy;
}
public Policy GeneratePolicyDocument1()
{
var client = new AmazonIdentityManagementServiceClient(aws_access_key_id, aws_secret_access_key, RegionEndpoint.EUWest1);
var statements = new List<Amazon.Auth.AccessControlPolicy.Statement>();
var actions = new List<ActionIdentifier>();
var resources = new List<Resource>();
var principal = new List<Principal>();
actions.Add(new ActionIdentifier("sts:AssumeRole"));
resources.Add(new Resource("*"));
var statement = new Amazon.Auth.AccessControlPolicy.Statement(Amazon.Auth.AccessControlPolicy.Statement.StatementEffect.Allow)
{
Actions = actions,
Resources = resources
};
statements.Add(statement);
Policy policy = new Policy
{
Version = "2012-10-17",
Statements = statements
};
return policy;
}
}
Итак, в конце концов я кое-что получилв Amazon:
Мне кажется, я неправильно создал профиль экземпляра, но не знаю, как его исправить.