我正在关注这个博客,但是我正在使用 palmer penguins 进行模型开发,并且我正处于在 SageMaker 上为 R 中的香根草模型生成和构建 Docker 映像的阶段。
当我运行以下命令时:
new_image_uri <-
vetiver_sm_build(
bucket = "ml-bucket-my-name",
name = "penguin_model",
board = board
)
我收到以下错误:
* Lockfile written to 'vetiver_renv.lock'.
WARN [2023-08-09 23:19:06.410]: Couldn't call 'get_role' to get Role ARN from role name my-name to get Role path.
Error: The current AWS identity is not a role: arn:aws:iam::123456789:user/my-name, therefore it cannot be used as a SageMaker execution role
在设置我的 AWS 环境时,我按照此博客进行操作,其中作者建议设置一个 IAM 用户,然后授予完整的 s3 访问权限,我已经这样做了,如下所示。
是否还缺少其他一些步骤来允许我将模型固定到 S3 存储桶中的电路板?
您可能会发现查看 此代码 并了解在您的环境中调用
smdocker::sagemaker_get_execution_role()
时会发生什么很有帮助。
如果我在本地调用此方法,我会收到有关没有凭据等的错误。
如果我登录到我们的 SageMaker 实例(即我在浏览器中的 RStudio IDE 中,网址以
sagemaker.aws
结尾),我会看到一个真正的执行角色,类似于 "arn:aws:iam::992233668866:role/vetiver-test-role"
。如果您使用 SageMaker 本身工作,您将拥有默认的 SageMaker 执行角色。
如果您在本地工作但与 AWS 和 SageMaker 资源交互,则需要将
role
参数显式传递到 vetiver_sm_build()
。 查看此讨论,了解您需要采取的步骤。