{"id":48652,"date":"2023-03-05T22:12:31","date_gmt":"2022-11-29T05:19:19","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/"},"modified":"2024-04-29T17:32:23","modified_gmt":"2024-04-29T09:32:23","slug":"%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/","title":{"rendered":"\u55e8\uff0c\u542c\u8bf4\u5728Terraform\u4e0a\u521b\u5efaSpotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6T\u6064\u886b\u5417\uff1f"},"content":{"rendered":"<p>\u53ea\u8981\u4f7f\u7528 Terraform \u521b\u5efa Spotify \u64ad\u653e\u5217\u8868\u5e76\u5728 Twitter \u4e0a\u53d1\u63a8\u6587\uff0c\u5c31\u53ef\u4ee5\u83b7\u5f97 Hashicorp T \u6064\u886b\uff1f<\/p>\n<p>&nbsp;<\/p>\n<p>\u4e00\u5f00\u59cb\u5c31\u6709\u9002\u7528\u4e8eSpotify\u7684Terraform\u63d0\u4f9b\u8005\uff0c\u771f\u662f\u4ee4\u4eba\u60ca\u8bb6\u5462\u3002<\/p>\n<h1>\u53c2\u8003\u4e86\u7684\u7f51\u9875<\/h1>\n<p>\u7531\u4e8e Windows \u662f\u4e00\u7bc7\u5e38\u89c1\u7684\u6587\u7ae0\uff0c\u6211\u4eec\u5c06\u4e3a M1 Mac \u8fdb\u884c\u81ea\u5b9a\u4e49\u5e76\u5f00\u59cb\u5b9e\u65bd\u3002<\/p>\n<p>&nbsp;<\/p>\n<h1>\u73af\u5883\u51c6\u5907\u5b8c\u6bd5<\/h1>\n<p>Macbook Air\uff08M1\uff09\u3067\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u8d77\u52d5<\/p>\n<p>Git\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>brew <span class=\"nb\">install <\/span>git\r\n\r\n<span class=\"nv\">$ <\/span>git version\r\ngit version 2.37.0\r\n<\/code><\/pre>\n<ul class=\"post-ul\">Terraform\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>brew <span class=\"nb\">install <\/span>terraform\r\n\r\n<span class=\"nv\">$ <\/span>terraform version\r\nTerraform v1.2.4\r\non darwin_arm64\r\n<\/code><\/pre>\n<ul class=\"post-ul\">Docker Desktop\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">VS Code\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Spotify\u30a2\u30ab\u30a6\u30f3\u30c8\u4f5c\u6210<\/ul>\n<p>&nbsp;<\/p>\n<h1>\u4eb2\u81ea\u52a8\u624b\u64cd\u4f5c\u7684\u6b65\u9aa4 z\u00ec de<\/h1>\n<h3>\u521b\u5efaSpotify\u5f00\u53d1\u8005\u5e94\u7528\u7a0b\u5e8f<\/h3>\n<ul class=\"post-ul\">Spotify Developers Dashboard\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3001\u5229\u7528\u8a31\u8afe\u306b\u540c\u610f\u3059\u308b<\/ul>\n<p>&nbsp;<\/p>\n<p>Create an app \u3092\u30af\u30ea\u30c3\u30af<\/p>\n<p>App name\uff1atfspot \u306a\u3069\u9069\u5f53\u306a\u540d\u524d\u3092\u5165\u308c\u308b<br \/>\nApp description: tfspot \u306a\u3069\u9069\u5f53\u306a\u8aac\u660e\u3092\u5165\u308c\u308b<\/p>\n<p>Edit settings \u3092\u30af\u30ea\u30c3\u30af<\/p>\n<p>Redirect URLs: http:\/\/localhost:27228\/spotify_callback \u3092\u5165\u529b\u3057Add\u3092\u30af\u30ea\u30c3\u30af<br \/>\nSave\u3092\u30af\u30ea\u30c3\u30af<\/p>\n<h3>\u542f\u52a8\u7528\u4e8e\u8ba4\u8bc1\u4ee3\u7406\u7684\u5bb9\u5668\u3002<\/h3>\n<ul class=\"post-ul\">Mac\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u8d77\u52d5\u3057\u3001\u74b0\u5883\u5909\u6570\u3092\u30bb\u30c3\u30c8<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">set <\/span><span class=\"nv\">SPOTIFY_CLIENT_REDIRECT_URI<\/span><span class=\"o\">=<\/span>http:\/\/localhost:27228\/spotify_callback\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u30db\u30fc\u30e0\u914d\u4e0b\u306b\u30ef\u30fc\u30af\u30d5\u30a9\u30eb\u30c0\u30fc tfspot \u3092\u4f5c\u6210<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">cd<\/span> ~\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">mkdir <\/span>tfspot\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u30c6\u30ad\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb .env \u3092\u4f5c\u6210\u3057\u3001tfspot\u914d\u4e0b\u306b\u914d\u7f6e<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nv\">SPOTIFY_CLIENT_ID<\/span><span class=\"o\">=<\/span>Spotify Developer Dashboard\u306e\u300cClientID\u300d\r\n<span class=\"nv\">SPOTIFY_CLIENT_SECRET<\/span><span class=\"o\">=<\/span>Spotify Developer Dashboard\u306e\u300cClient Secret\u300d\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u8a8d\u8a3c\u30d7\u30ed\u30ad\u30b7\u7528\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>docker run <span class=\"nt\">--rm<\/span> <span class=\"nt\">-it<\/span> <span class=\"nt\">-p<\/span> 27228:27228 <span class=\"nt\">--env-file<\/span> .env ghcr.io\/conradludgate\/spotify-auth-proxy\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8682913a08637a6bd444\/31-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-07-02 19.20.39.png\" \/><\/div>\n<h3>\u51c6\u5907 Terraform<\/h3>\n<p>\u30b3\u30f3\u30c6\u30ca\u5b9f\u884c\u4e2d\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u306f\u305d\u306e\u307e\u307e\u306b\u3057\u3001\u65b0\u898f\u30bf\u30fc\u30df\u30ca\u30eb\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u958b\u304f<\/p>\n<p>\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001Spotify\u7528Terraform\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30ed\u30fc\u30f3\u3059\u308b<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>git clone https:\/\/github.com\/hashicorp\/learn-terraform-spotify.git\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">cd <\/span>learn-terraform-spotify\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8682913a08637a6bd444\/35-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-07-02 19.30.25.png\" \/><\/div>\n<pre class=\"post-pre\"><code><span class=\"k\">terraform<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">required_providers<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">spotify<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"nx\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"~&gt; 0.2.6\"<\/span>\r\n      <span class=\"nx\">source<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"conradludgate\/spotify\"<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">provider<\/span> <span class=\"s2\">\"spotify\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">api_key<\/span> <span class=\"p\">=<\/span> <span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">spotify_api_key<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">data<\/span> <span class=\"s2\">\"spotify_search_track\"<\/span> <span class=\"s2\">\"by_artist\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">artist<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Nana Mizuki\"<\/span>\r\n  <span class=\"nx\">album<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"POP MASTER\"<\/span>\r\n  <span class=\"nx\">name<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"UNBREAKABLE\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"spotify_playlist\"<\/span> <span class=\"s2\">\"playlist\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">name<\/span>        <span class=\"p\">=<\/span> <span class=\"s2\">\"\u304a\u5948\u3005\"<\/span>\r\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"This playlist was created by Terraform\"<\/span>\r\n  <span class=\"nx\">public<\/span>      <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\r\n\r\n  <span class=\"nx\">tracks<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"k\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">spotify_search_track<\/span><span class=\"p\">.<\/span><span class=\"nx\">by_artist<\/span><span class=\"p\">.<\/span><span class=\"nx\">tracks<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">].<\/span><span class=\"nx\">id<\/span><span class=\"p\">,<\/span>\r\n<span class=\"c1\">#    data.spotify_search_track.by_artist.tracks[1].id,<\/span>\r\n<span class=\"c1\">#    data.spotify_search_track.by_artist.tracks[2].id,<\/span>\r\n  <span class=\"p\">]<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>terraform.tfvars.example \u30d5\u30a1\u30a4\u30eb\u3092\u4fee\u6b63\u3059\u308b<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u540d\u3092 terraform.tfvars \u306b\u5909\u66f4<br \/>\n\u30d5\u30a1\u30a4\u30eb\u5185\u306e &#8230; \u306e\u90e8\u5206\u3092\u3001Docker\u30b3\u30f3\u30c6\u30ca\u8d77\u52d5\u5f8c\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u51fa\u529b\u3055\u308c\u3066\u3044\u308b APIKeys \u306e\u5024\u3067\u7f6e\u304d\u63db\u3048\u308b<\/p>\n<h3>\u6267\u884cTerraform<\/h3>\n<ul class=\"post-ul\">\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3067\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u521d\u671f\u5316\u3092\u5b9f\u65bd<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>terraform init\r\n\uff08\u4e2d\u7565\uff09\r\nTerraform has been successfully initialized!\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3067Terraform\u306b\u3088\u308b\u30ea\u30bd\u30fc\u30b9\u4f5c\u6210\u3092\u5b9f\u65bd<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>terraform apply\r\n<\/code><\/pre>\n<p>\u5bf9\u4e8e\u719f\u6089Terraform\u7684\u7528\u6237\u6765\u8bf4\uff0c\u4ed6\u4eec\u4f1a\u770b\u5230\u719f\u6089\u7684\u201cPlan\u201d\u7ed3\u679c\u663e\u793a\u3002\u901a\u8fc7&#8221;+&#8221;\u7b26\u53f7\u544a\u8bc9\u4ed6\u4eec\u5c06\u521b\u5efa\u54ea\u4e9b\u8d44\u6e90\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nx\">Terraform<\/span> <span class=\"nx\">used<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">selected<\/span> <span class=\"nx\">providers<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">generate<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">following<\/span> <span class=\"nx\">execution<\/span> <span class=\"nx\">plan<\/span><span class=\"err\">.<\/span> <span class=\"nx\">Resource<\/span> <span class=\"nx\">actions<\/span>\r\n<span class=\"nx\">are<\/span> <span class=\"nx\">indicated<\/span> <span class=\"nx\">with<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">following<\/span> <span class=\"nx\">symbols<\/span><span class=\"err\">:<\/span>\r\n  <span class=\"err\">+<\/span> <span class=\"nx\">create<\/span>\r\n\r\n<span class=\"nx\">Terraform<\/span> <span class=\"nx\">will<\/span> <span class=\"nx\">perform<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">following<\/span> <span class=\"nx\">actions<\/span><span class=\"err\">:<\/span>\r\n\r\n  <span class=\"c1\"># spotify_playlist.playlist will be created<\/span>\r\n  <span class=\"err\">+<\/span> <span class=\"k\">resource<\/span> <span class=\"s2\">\"spotify_playlist\"<\/span> <span class=\"s2\">\"playlist\"<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"err\">+<\/span> <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"This playlist was created by Terraform\"<\/span>\r\n      <span class=\"err\">+<\/span> <span class=\"nx\">id<\/span>          <span class=\"p\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">known<\/span> <span class=\"nx\">after<\/span> <span class=\"nx\">apply<\/span><span class=\"p\">)<\/span>\r\n      <span class=\"err\">+<\/span> <span class=\"nx\">name<\/span>        <span class=\"p\">=<\/span> <span class=\"s2\">\"\u304a\u5948\u3005\"<\/span>\r\n      <span class=\"err\">+<\/span> <span class=\"nx\">public<\/span>      <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\r\n      <span class=\"err\">+<\/span> <span class=\"nx\">snapshot_id<\/span> <span class=\"p\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">known<\/span> <span class=\"nx\">after<\/span> <span class=\"nx\">apply<\/span><span class=\"p\">)<\/span>\r\n      <span class=\"err\">+<\/span> <span class=\"nx\">tracks<\/span>      <span class=\"p\">=<\/span> <span class=\"p\">[<\/span>\r\n          <span class=\"err\">+<\/span> <span class=\"s2\">\"3IY2GIqcVAYhaM2zn5r3vh\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"p\">]<\/span>\r\n    <span class=\"p\">}<\/span>\r\n\r\n<span class=\"nx\">Plan<\/span><span class=\"err\">:<\/span> <span class=\"mi\">1<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">add<\/span><span class=\"err\">,<\/span> <span class=\"mi\">0<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">change<\/span><span class=\"err\">,<\/span> <span class=\"mi\">0<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">destroy<\/span><span class=\"err\">.<\/span>\r\n\r\n<span class=\"nx\">Changes<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">Outputs<\/span><span class=\"err\">:<\/span>\r\n  <span class=\"err\">+<\/span> <span class=\"nx\">playlist_url<\/span> <span class=\"err\">=<\/span> <span class=\"err\">(<\/span><span class=\"nx\">known<\/span> <span class=\"nx\">after<\/span> <span class=\"nx\">apply<\/span><span class=\"err\">)<\/span>\r\n\r\n<span class=\"nx\">Do<\/span> <span class=\"nx\">you<\/span> <span class=\"nx\">want<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">perform<\/span> <span class=\"nx\">these<\/span> <span class=\"nx\">actions<\/span><span class=\"err\">?<\/span>\r\n  <span class=\"nx\">Terraform<\/span> <span class=\"nx\">will<\/span> <span class=\"nx\">perform<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">actions<\/span> <span class=\"nx\">described<\/span> <span class=\"nx\">above<\/span><span class=\"err\">.<\/span>\r\n  <span class=\"nx\">Only<\/span> <span class=\"s1\">'yes'<\/span> <span class=\"nx\">will<\/span> <span class=\"nx\">be<\/span> <span class=\"nx\">accepted<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">approve<\/span><span class=\"err\">.<\/span>\r\n\r\n  <span class=\"nx\">Enter<\/span> <span class=\"nx\">a<\/span> <span class=\"nx\">value<\/span><span class=\"err\">:<\/span> \r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u554f\u984c\u306a\u3055\u305d\u3046\u306a\u3089 yes \u3068\u5165\u529b\u3057\u5b9f\u884c\u3002\u4ee5\u4e0b\u304c\u8868\u793a\u3055\u308c\u308c\u3070\u6210\u529f\u3002<\/ul>\n<pre class=\"post-pre\"><code><span class=\"err\">\uff08\u524d\u7565\uff09<\/span>\r\n<span class=\"nx\">Apply<\/span> <span class=\"nx\">complete<\/span><span class=\"err\">!<\/span> <span class=\"nx\">Resources<\/span><span class=\"err\">:<\/span> <span class=\"mi\">1<\/span> <span class=\"nx\">added<\/span><span class=\"err\">,<\/span> <span class=\"mi\">0<\/span> <span class=\"nx\">changed<\/span><span class=\"err\">,<\/span> <span class=\"mi\">0<\/span> <span class=\"nx\">destroyed<\/span><span class=\"err\">.<\/span>\r\n\r\n<span class=\"nx\">Outputs<\/span><span class=\"err\">:<\/span>\r\n\r\n<span class=\"nx\">playlist_url<\/span> <span class=\"err\">=<\/span> <span class=\"s2\">\"https:\/\/open.spotify.com\/playlist\/16bua5a1CXLQpI8vg5asJo\"<\/span>\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8682913a08637a6bd444\/47-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-07-02 19.59.46.png\" \/><\/div>\n<h1>\u5982\u679c\u80fd\u591f\u987a\u5229\u521b\u5efa\u64ad\u653e\u5217\u8868\u7684\u8bdd<\/h1>\n<p>\u8ba9\u6211\u4eec\u5728Twitter\u4e0a\u4f7f\u7528\u6807\u7b7e\u53d1\u8868\u63a8\u6587\u5427\u3002\u8bf4\u4e0d\u5b9a\u80fd\u83b7\u5f97Hashicorp T\u6064\u886b\uff01<\/p>\n<p>&nbsp;<\/p>\n<p>\u867d\u7136Terraform\u5f88\u6709\u8da3\u2026\u2026\u4f46\u6211\u89c9\u5f97\u76f4\u63a5\u521b\u5efa\u64ad\u653e\u5217\u8868\u53ef\u80fd\u4f1a\u66f4\u5feb\u4e00\u70b9\u5462\uff0c\u54c8\u54c8\u3002<br \/>\n\u53ea\u8981\u7528\u4e00\u4e9b\u5927\u89c4\u6a21\u64cd\u4f5c\u548c\u81ea\u52a8\u5316\u7684\u601d\u8def\uff0c\u80af\u5b9a\u80fd\u627e\u5230\u6709\u6548\u7684\u4f7f\u7528\u65b9\u6cd5\uff01\uff01<\/p>\n<h1>\u5ef6\u4f38\u6545\u4e8b\uff08\u7ed3\u5c3e\uff09<\/h1>\n<p>\u5176\u5b9e\u8fd9\u7bc7\u6587\u7ae0\u6211\u5df2\u7ecf\u653e\u7f6e\u4e86\u5927\u7ea62\u4e2a\u6708\uff0c\u4f46\u662f\u6211\u8fd8\u6ca1\u6709\u6536\u5230T\u6064\uff0c\u6240\u4ee5\u4f3c\u4e4e\u6709\u7591\u95ee\u8fd9\u4e2a\u6d3b\u52a8\u5df2\u7ecf\u7ed3\u675f\u4e86\u3002\u82e6\u7b11<br \/>\n\u4ec0\u4e48\u9b3c\uff01<\/p>\n<p>\u6700\u8fd1\u770b\u5230\u7684\u90a3\u4e2a\u63a8\u7279\u662f\u5173\u4e8e\u6536\u5230T\u6064\u7684\uff0c\u4e0d\u77e5\u9053\u662f\u4ec0\u4e48\u610f\u601d\u5462\u2026<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u53ea\u8981\u4f7f\u7528 Terraform \u521b\u5efa Spotify \u64ad\u653e\u5217\u8868\u5e76\u5728 Twitter \u4e0a\u53d1\u63a8\u6587\uff0c\u5c31\u53ef\u4ee5\u83b7\u5f97 Has [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48652","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u55e8\uff0c\u542c\u8bf4\u5728Terraform\u4e0a\u521b\u5efaSpotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6T\u6064\u886b\u5417\uff1f - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u55e8\uff0c\u542c\u8bf4\u5728terraform\u4e0a\u521b\u5efaspotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6t\u6064\u886b\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u55e8\uff0c\u542c\u8bf4\u5728Terraform\u4e0a\u521b\u5efaSpotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6T\u6064\u886b\u5417\uff1f\" \/>\n<meta property=\"og:description\" content=\"\u53ea\u8981\u4f7f\u7528 Terraform \u521b\u5efa Spotify \u64ad\u653e\u5217\u8868\u5e76\u5728 Twitter \u4e0a\u53d1\u63a8\u6587\uff0c\u5c31\u53ef\u4ee5\u83b7\u5f97 Has [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u55e8\uff0c\u542c\u8bf4\u5728terraform\u4e0a\u521b\u5efaspotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6t\u6064\u886b\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-29T05:19:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T09:32:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8682913a08637a6bd444\/31-0.png\" \/>\n<meta name=\"author\" content=\"\u6587, \u7fd4\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6587, \u7fd4\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/\",\"name\":\"\u55e8\uff0c\u542c\u8bf4\u5728Terraform\u4e0a\u521b\u5efaSpotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6T\u6064\u886b\u5417\uff1f - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-11-29T05:19:19+00:00\",\"dateModified\":\"2024-04-29T09:32:23+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u55e8\uff0c\u542c\u8bf4\u5728Terraform\u4e0a\u521b\u5efaSpotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6T\u6064\u886b\u5417\uff1f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\",\"name\":\"\u6587, \u7fd4\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"caption\":\"\u6587, \u7fd4\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u55e8\uff0c\u542c\u8bf4\u5728Terraform\u4e0a\u521b\u5efaSpotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6T\u6064\u886b\u5417\uff1f - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u55e8\uff0c\u542c\u8bf4\u5728terraform\u4e0a\u521b\u5efaspotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6t\u6064\u886b\/","og_locale":"zh_CN","og_type":"article","og_title":"\u55e8\uff0c\u542c\u8bf4\u5728Terraform\u4e0a\u521b\u5efaSpotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6T\u6064\u886b\u5417\uff1f","og_description":"\u53ea\u8981\u4f7f\u7528 Terraform \u521b\u5efa Spotify \u64ad\u653e\u5217\u8868\u5e76\u5728 Twitter \u4e0a\u53d1\u63a8\u6587\uff0c\u5c31\u53ef\u4ee5\u83b7\u5f97 Has [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u55e8\uff0c\u542c\u8bf4\u5728terraform\u4e0a\u521b\u5efaspotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6t\u6064\u886b\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-11-29T05:19:19+00:00","article_modified_time":"2024-04-29T09:32:23+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8682913a08637a6bd444\/31-0.png"}],"author":"\u6587, \u7fd4","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6587, \u7fd4","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"2 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/","name":"\u55e8\uff0c\u542c\u8bf4\u5728Terraform\u4e0a\u521b\u5efaSpotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6T\u6064\u886b\u5417\uff1f - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-11-29T05:19:19+00:00","dateModified":"2024-04-29T09:32:23+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u55e8\uff0c\u542c\u8bf4\u5728Terraform\u4e0a\u521b\u5efaSpotify\u64ad\u653e\u5217\u8868\u53ef\u4ee5\u5f97\u5230\u4e00\u4ef6T\u6064\u886b\u5417\uff1f"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c","name":"\u6587, \u7fd4","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","caption":"\u6587, \u7fd4"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%97%a8%ef%bc%8c%e5%90%ac%e8%af%b4%e5%9c%a8terraform%e4%b8%8a%e5%88%9b%e5%bb%baspotify%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e5%8f%af%e4%bb%a5%e5%be%97%e5%88%b0%e4%b8%80%e4%bb%b6t%e6%81%a4%e8%a1%ab\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48652","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=48652"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48652\/revisions"}],"predecessor-version":[{"id":86653,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48652\/revisions\/86653"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48652"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48652"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48652"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}