Amazon s3 假设IAM角色将MLFlow工件存储在另一个帐户的S3存储桶上

Amazon s3 假设IAM角色将MLFlow工件存储在另一个帐户的S3存储桶上,amazon-s3,amazon-iam,databricks,mlflow,Amazon S3,Amazon Iam,Databricks,Mlflow,我必须将我的MLFlow工件(使用Databricks Unified Analytics)保存到一个S3存储桶中,服务端加密使用KMS密钥 我的实例进入AWS帐户A,我的S3存储桶和我的KMS密钥进入帐户B。我不能让我的KMS密钥进入我的帐户A 出于安全原因,我不想使用DBFS装载S3存储桶(存储桶可能包含敏感数据,我不想在用户之间共享) 为了访问bucket,我必须扮演IAM角色,就像我通过s3a访问bucket一样(使用spark.hadoop.fs.s3a.credentialsType

我必须将我的MLFlow工件(使用Databricks Unified Analytics)保存到一个S3存储桶中,服务端加密使用KMS密钥

我的实例进入AWS帐户A,我的S3存储桶和我的KMS密钥进入帐户B。我不能让我的KMS密钥进入我的帐户A

出于安全原因,我不想使用DBFS装载S3存储桶(存储桶可能包含敏感数据,我不想在用户之间共享)

为了访问bucket,我必须扮演IAM角色,就像我通过s3a访问bucket一样(使用
spark.hadoop.fs.s3a.credentialsType
spark.hadoop.fs.s3a.stsAssumeRole.arn
参数)

当我用s3创建一个实验并尝试记录这样一个模型时:

导入mlflow
导入mlflow.sklearn
id\u exp=mlflow.create\u实验(“/Users/first)。last@company.org/实验“,'s3://s3 bucket name/”)
使用mlflow.start\u run(实验\u id=id\u exp):
clf_mlf=tree.DecisionTreeClassifier()
clf_mlf=clf_mlf.配合(X_系列,y_系列)
y_pred=clf_mlf.预测(X_检验)
mlflow.sklearn.log_模型(clf_mlf,“model”,serialization_format='pickle')
我有一个错误:

S3UploadFailedError: Failed to upload /tmp/tmp2yl2olhi/model/conda.yaml to s3-bucket-name//05c17a33a33d46a5ad3cc811a9faf35a/artifacts/model/conda.yaml: An error occurred (KMS.NotFoundException) when calling the PutObject operation: Key 'arn:aws:kms:eu-central-1:account_a_id:key/key_id' does not exist
在访问S3之前,我如何让MLFlow承担角色