Elixir的Digitalocean空间

时间:2019-02-10 06:06:01

标签: amazon-web-services amazon-s3 elixir

我正试图为可用于数字海洋空间的长生不老药找到aws客户端。 我尝试了aws-elixir(因为它允许使用不同的端点),但是我找不到执行S3操作的方法。

我问

  1. 如何处理aws-elixir的S3存储桶?
  2. 如果aws-elixir不起作用,什么是我的最佳解决方案?

1 个答案:

答案 0 :(得分:3)

不幸的是,aws-elixir不支持S3,但是ExAws支持。为了使用ExAws,首先需要在mix.exs文件中添加以下依赖项:

defp deps() do
  [
    {:ex_aws, "~> 2.0"},
    {:ex_aws_s3, "~> 2.0"},
    {:poison, "~> 3.0"},
    {:hackney, "~> 1.9"},
    {:sweet_xml, "~> 0.6"},
  ]
end

请注意,ex_awsex_aws_s3都需要添加到依赖项中。 hackney是HTTP客户端,poison用于JSON解析,sweet_xml用于XML解析。

现在添加了依赖关系,接下来需要配置S3以连接到DigitalOcean空间。

在您的config.exs文件中输入以下内容:

config :ex_aws, :s3,
  %{
    access_key_id: "access key",
    secret_access_key: "secret key",
    scheme: "https://",
    host: %{"sfo2" => "your-space-name.sfo2.digitaloceanspaces.com"},
    region: "sfo2"
  } 

"access key""secret key"需要替换为从DigitalOcean获得的实际密钥。

请确保将"sfo2"替换为您正在使用的实际Spaces区域。当然,请输入您的实际空间名称而不是your-space-name

别忘了运行mix deps.get,一切就绪。

您可以通过运行iex,然后键入以下内容来启动iex -S mix会话并验证所有文件是否正常工作:

ExAws.S3.list_objects("bucket") |> ExAws.request!