{"id":2287,"date":"2023-05-12T09:53:34","date_gmt":"2023-05-12T00:53:34","guid":{"rendered":"https:\/\/manvscloud.com\/?p=2287"},"modified":"2023-05-12T09:53:34","modified_gmt":"2023-05-12T00:53:34","slug":"ncloud-%eb%b0%b1%ec%97%85%ec%9a%a9-%ec%84%9c%eb%b2%84-%ec%9d%b4%eb%af%b8%ec%a7%80-%eb%b3%b4%ea%b4%80%ec%9d%bc-%ec%84%a4%ec%a0%95-%eb%b0%8f-%ec%82%ad%ec%a0%9c-%ec%9e%90%eb%8f%99%ed%99%94","status":"publish","type":"post","link":"https:\/\/manvscloud.com\/?p=2287","title":{"rendered":"[NCLOUD] \ubc31\uc5c5\uc6a9 \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubcf4\uad00\uc77c \uc124\uc815 \ubc0f \uc0ad\uc81c \uc790\ub3d9\ud654"},"content":{"rendered":"\n<p>\uc548\ub155\ud558\uc138\uc694. MANVSCLOUD \uae40\uc218\ud604\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\uc804\uc5d0 \uacf5\uc720\ub4dc\ub838\ub358 &#8216;[NCLOUD] CLOUD FUNCTIONS\uc744 \ud65c\uc6a9\ud55c \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5 \uc790\ub3d9\ud654 \ubc0f SLACK \uc54c\ub78c&#8217;\uc5d0 \uc774\uc5b4\uc11c \uc624\ub298\uc740 \ubc31\uc5c5\ub41c \uc11c\ubc84 \uc774\ubbf8\uc9c0\uc758 \ubcf4\uad00\uc77c\uc744 \uc124\uc815\ud558\uace0 \uadf8 \ubcf4\uad00\uc77c\uc744 \ub118\uae34 \uc774\ubbf8\uc9c0\ub97c \uc790\ub3d9\uc73c\ub85c \uc0ad\uc81c\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\ub824\uace0 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5\uc740 \uc911\uc694\ud55c \ub370\uc774\ud130\ub97c \uc548\uc804\ud558\uac8c \ubcf4\uad00\ud558\ub294 \ub370 \ud070 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc11c\ubc84 \uc774\ubbf8\uc9c0\ub97c \uc9c0\uc18d\uc801\uc73c\ub85c \ubcf4\uad00\ud558\ub2e4 \ubcf4\uba74 \uacb0\uad6d \ube44\uc6a9\uc73c\ub85c \uc774\uc5b4\uc9c0\uba70 \uc774\ub97c \uc218\ub3d9\uc73c\ub85c \uad00\ub9ac\ud558\ub294 \uac83\uc740 \uc0c1\ub2f9\ud788 \ubc88\uac70\ub85c\uc6b8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub798\uc11c \uc774\ubc88 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 Serverless \uc11c\ube44\uc2a4\uc778 Cloud Functions\ub97c \uc774\uc6a9\ud574 \ubcf4\uad00\uc77c\uc744 \uc124\uc815\ud558\uace0 \ubcf4\uad00\uc77c\uc774 \uc9c0\ub09c \uc11c\ubc84 \uc774\ubbf8\uc9c0\ub294 \uc790\ub3d9\uc73c\ub85c \uc0ad\uc81c\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\ub824\ub4dc\ub9ac\uace0\uc790 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"has-white-color has-vivid-green-cyan-background-color has-text-color has-background wp-block-heading\"> Package &amp; Trigger<\/h3>\n\n\n<div class=\"vlp-link-container vlp-layout-basic wp-block-visual-link-preview-link\"><a href=\"https:\/\/manvscloud.com\/?p=2138\" class=\"vlp-link\" title=\"[NCLOUD] Cloud Functions\uc744 \ud65c\uc6a9\ud55c \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5 \uc790\ub3d9\ud654 \ubc0f Slack \uc54c\ub78c\" rel=\"nofollow\" target=\"_blank\"><\/a><div class=\"vlp-layout-zone-side\"><div class=\"vlp-block-2 vlp-link-image\"><img decoding=\"async\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/06135545\/CLA-Alarm-03.png\" style=\"max-width: 150px; max-height: 150px\" \/><\/div><\/div><div class=\"vlp-layout-zone-main\"><div class=\"vlp-block-0 vlp-link-title\">[NCLOUD] Cloud Functions\uc744 \ud65c\uc6a9\ud55c \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5 \uc790\ub3d9\ud654 \ubc0f Slack \uc54c\ub78c<\/div><div class=\"vlp-block-1 vlp-link-summary\">\uc548\ub155\ud558\uc138\uc694. MANVSCLOUD \uae40\uc218\ud604\uc785\ub2c8\ub2e4. \uc11c\ubc84\uc758 \ub370\uc774\ud130 \ubc31\uc5c5\uc740 \ub9e4\uc6b0 \uc911\uc694\ud55c \uc791\uc5c5 \uc911 \ud558\ub098\uc785\ub2c8\ub2e4. \uae30\uc874\uc5d0 \ud3ec\uc2a4\ud305\ub410\ub358 \u201c[NCLOUD] \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc774\ubbf8\uc9c0 \ubc31\uc5c5\uc744 \uc790\ub3d9\ud654 \ud574\ubcf4\uc790(WITH. SHELL SCRIPT)\u201d \ud3ec\uc2a4\ud305\uc740 ShellScript\ub85c \uc791\uc131\ub418\uc5c8\uc73c\uba70 \uc11c\ubc84\uc5d0\uc11c \uc124\uc815\ud558\uace0 cron\uc5d0 \ub4f1\ub85d\ud574\uc918\uc57c\ud558\ub294 \ubd88\ud3b8\ud568\uc774 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc624\ub298\uc740 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc758 Cloud Functions\uc744 \ud65c\uc6a9\ud558\uc5ec \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5\uc744 \uc790\ub3d9\ud654\ud558\uace0, \ubc31\uc5c5 \uc0c1\ud0dc\ub97c Slack \uc54c\ub78c\uc73c\ub85c \ubc1b\uc544\ubcf4\ub294 \ubc29\ubc95\uc744 \uc18c\uac1c\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \uae00\uc744 \ud1b5\ud574 \uc5ec\ub7ec\ubd84\ub3c4 \uc27d\uac8c \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\u2026<\/div><\/div><\/div>\n\n\n<p>Package\uc640 Trigger\ub294 &#8216;[NCLOUD] CLOUD FUNCTIONS\uc744 \ud65c\uc6a9\ud55c \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5 \uc790\ub3d9\ud654 \ubc0f SLACK \uc54c\ub78c&#8217; \ud3ec\uc2a4\ud305\uc5d0\uc11c \uc0dd\uc131\ud55c &#8220;manvscloud-server-image-backup&#8221;\uacfc &#8220;manvscloud-backup-cron-trg&#8221;\ub97c \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\ub824\uace0 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"406\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12092855\/image-1-1024x406.png\" alt=\"\" class=\"wp-image-2290\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12092855\/image-1-1024x406.png 1024w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12092855\/image-1-300x119.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12092855\/image-1-768x305.png 768w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12092855\/image-1-1080x429.png 1080w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12092855\/image-1.png 1184w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Cloud Functions &#8211; Package<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12092632\/image.png\" alt=\"\" class=\"wp-image-2289\" width=\"471\" height=\"185\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12092632\/image.png 624w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12092632\/image-300x118.png 300w\" sizes=\"(max-width: 471px) 100vw, 471px\" \/><figcaption>Cloud Functions &#8211; Trigger<\/figcaption><\/figure>\n\n\n\n<p>Package\uc5d0 \uc785\ub825\ub418\ub294 \ub514\ud3f4\ud2b8 \ud30c\ub77c\ubbf8\ud130\uc758 ACCESS KEY\uc640 SECRET KEY\ub294 \ubc18\ub4dc\uc2dc Sub Account\ub85c \ubc1c\uae09\ud558\uc5ec \ucd5c\uc18c\ud55c\uc758 \uad8c\ud55c\ub9cc \ubd80\uc5ec\ud574\uc57c\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"has-white-color has-vivid-green-cyan-background-color has-text-color has-background wp-block-heading\"> Action<\/h3>\n\n\n\n<p>Cloud Functions &#8211; Action\uc5d0\uc11c [+ Action \uc0dd\uc131]\uc744 \ud074\ub9ad\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ul><li><strong>\ud2b8\ub9ac\uac70 \uc885\ub958<\/strong> : \uc704\uc5d0\uc11c \uc0dd\uc131\ud55c \ud2b8\ub9ac\uac70 \ucd94\uac00 (manvscloud-backup-cron-trg)<\/li><li><strong>\ud328\ud0a4\uc9c0<\/strong> : \uc704\uc5d0\uc11c \uc0dd\uc131\ud55c \ud328\ud0a4\uc9c0 \ucd94\uac00 (manvscloud-server-image-backup)<\/li><li><strong>\ud0c0\uc785<\/strong> : \uae30\ubcf8<\/li><li><strong>\uc774\ub984, \uc124\uba85<\/strong> : \uc790\uc720\ub86d\uac8c \uc785\ub825<\/li><li><strong>\uc5b8\uc5b4<\/strong>(\uc18c\uc2a4\ucf54\ub4dc) : Python 3.7<\/li><li><strong>\ud0c0\uc785<\/strong>(\uc18c\uc2a4\ucf54\ub4dc) : \ucf54\ub4dc<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import os\nimport hashlib\nimport hmac\nimport base64\nimport requests\nimport time\nimport json\nfrom datetime import datetime, timedelta\n\ndef get_member_server_image_list(access_key, secret_key):\n\n    timestamp = int(time.time() * 1000)\n    timestamp = str(timestamp)\n\n    secret_key = bytes(secret_key, 'UTF-8')\n\n    method = \"GET\"\n\n    api_server = \"https:\/\/ncloud.apigw.ntruss.com\"\n    uri = \"\/vserver\/v2\/getMemberServerImageInstanceList\"\n    uri = uri + \"?responseFormatType=json\"\n\n    message = method + \" \" + uri + \"\\n\" + timestamp + \"\\n\" + access_key\n    message = bytes(message, 'UTF-8')\n    signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())\n\n    http_header = {\n            'x-ncp-apigw-signature-v2': signingKey,\n            'x-ncp-apigw-timestamp': timestamp,\n            'x-ncp-iam-access-key': access_key,\n            }\n\n    response = requests.get(api_server + uri, headers=http_header)\n\n    return response.json()\n\ndef delete_member_server_image(deleteImg, access_key, secret_key):\n\n    timestamp = int(time.time() * 1000)\n    timestamp = str(timestamp)\n\n    secret_key = bytes(secret_key, 'UTF-8')\n\n    method = \"GET\"\n\n    api_server = \"https:\/\/ncloud.apigw.ntruss.com\"\n    uri = \"\/vserver\/v2\/deleteMemberServerImageInstances?memberServerImageInstanceNoList.1=\" + deleteImg\n    uri = uri + \"&amp;responseFormatType=json\"\n\n    message = method + \" \" + uri + \"\\n\" + timestamp + \"\\n\" + access_key\n    message = bytes(message, 'UTF-8')\n    signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())\n\n    http_header = {\n            'x-ncp-apigw-signature-v2': signingKey,\n            'x-ncp-apigw-timestamp': timestamp,\n            'x-ncp-iam-access-key': access_key,\n            }\n\n    response = requests.get(api_server + uri, headers=http_header)\n\n    return response.status_code == 200\n\ndef main(args):\n\n    access_key = args['NCLOUD_ACCESS_KEY']\n    secret_key = args['NCLOUD_SECRET_KEY']\n\n    response_json = get_member_server_image_list(access_key, secret_key)\n\n    image_list = response_json['getMemberServerImageInstanceListResponse']['memberServerImageInstanceList']\n\n    today = datetime.now()\n\n    deleted_images = []\n\n    for image in image_list:\n        image_name = image['memberServerImageName']\n\n        if not image_name.startswith('backup'):\n            continue\n\n        date_str = image_name.split('-')[-1]\n        image_date = datetime.strptime(date_str, '%Y%m%d')\n\n        days_passed = (today - image_date).days\n\n        # \uc774\ubbf8\uc9c0 \ubcf4\uad00\uc77c \uc124\uc815 (Default : 30\uc77c)\n        if days_passed >= 30:\n            image_instance_no = image['memberServerImageInstanceNo']\n            if delete_member_server_image(image_instance_no, access_key, secret_key):\n                deleted_images.append(image_name)\n\n    return {\"result\": \"success\", \"deleted_images\": deleted_images}\n    <\/pre>\n\n\n\n<p class=\"has-vivid-cyan-blue-color has-text-color\"><strong>\ucf54\ub4dc \uc124\uba85<\/strong> : &#8216;[NCLOUD] CLOUD FUNCTIONS\uc744 \ud65c\uc6a9\ud55c \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5 \uc790\ub3d9\ud654 \ubc0f SLACK \uc54c\ub78c&#8217;\uc5d0\uc11c \uc124\uc815\ud55c\ub300\ub85c \ubc31\uc5c5\uc774 \ub420 \uacbd\uc6b0 backup-ServerId-date(backup-1111111-20230512)\uc640 \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \uc774\ubbf8\uc9c0\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \uc704 \ucf54\ub4dc \uc2e4\ud589 \uc2dc backup\uc73c\ub85c \uc2dc\uc791\ud558\ub294 \uc11c\ubc84 \uc774\ubbf8\uc9c0\ub97c \ub300\uc0c1\uc73c\ub85c \ub9c8\uc9c0\ub9c9\uc5d0 Date\uac00 \ubcf4\uad00\uc77c\uc744 \ub118\uc5b4\uac08 \uacbd\uc6b0 \uc790\ub3d9\uc73c\ub85c \uc0ad\uc81c\ub418\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"has-vivid-cyan-blue-color has-text-color\">\uc989, test-backup\uacfc \uac19\uc774 backup\uc73c\ub85c \uc2dc\uc791\ud558\uc9c0 \uc54a\ub294 \uc774\ubbf8\uc9c0\ub97c \uc218\ub3d9\uc73c\ub85c \uc0dd\uc131\ud560 \uacbd\uc6b0 \ud574\ub2f9 \uc774\ubbf8\uc9c0\ub294 \uc790\ub3d9 \uc0ad\uc81c \ub300\uc0c1\uc5d0 \ud3ec\ud568\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc815\uae30 \uc774\ubbf8\uc9c0 \ubc31\uc5c5\uacfc \uc218\ub3d9\uc73c\ub85c \uc0dd\uc131\ud55c \uc774\ubbf8\uc9c0\ub97c \ub530\ub85c \uad00\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"has-vivid-cyan-blue-color has-text-color\">\ub610\ud55c \uc791\uc131\ub41c \ucf54\ub4dc\ub97c \uae30\uc900\uc73c\ub85c \uc774\ubbf8\uc9c0 \ubcf4\uad00\uc77c\uc774 30\uc77c\ub85c \uc124\uc815\ub418\uc5b4\uc788\uc73c\ubbc0\ub85c \ucf54\ub4dc\ub97c \uc218\uc815\ud558\uc5ec \uc6d0\ud558\ub294 \ubcf4\uad00\uc77c\uc218\ub97c \ubcc0\uacbd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"has-vivid-cyan-blue-color has-text-color\">if days_passed >= 30: \ubd80\ubd84\uc744 if days_passed >= 90: \ub85c \ubcc0\uacbd\ud560 \uacbd\uc6b0 90\uc77c \ubcf4\uad00\uc73c\ub85c \ubcc0\uacbd\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p>VPC \uc5f0\uacb0 \uc815\ubcf4\uc5d0\uc11c VPC\uc640 Subnet\uc744 \uc120\ud0dd \ud6c4 \uc635\uc158 \uc124\uc815\uc740 \uae30\ubcf8 \uc124\uc815 \uc0c1\ud0dc\ub85c Action\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094330\/image-3.png\" alt=\"\" class=\"wp-image-2292\" width=\"589\" height=\"289\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094330\/image-3.png 783w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094330\/image-3-300x148.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094330\/image-3-768x378.png 768w\" sizes=\"(max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>\uc0dd\uc131\ub41c Action\uc744 [\uc2e4\ud589]\ud558\uc5ec \uc815\uc0c1\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"204\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094313\/image-2-1024x204.png\" alt=\"\" class=\"wp-image-2291\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094313\/image-2-1024x204.png 1024w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094313\/image-2-300x60.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094313\/image-2-768x153.png 768w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094313\/image-2-1080x215.png 1080w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/05\/12094313\/image-2.png 1307w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"has-white-color has-cyan-bluish-gray-background-color has-text-color has-background wp-block-heading\"> Personal Comments<\/h3>\n\n\n\n<p>\uc9c0\uae08\uae4c\uc9c0 &#8216;[NCLOUD] \ubc31\uc5c5\uc6a9 \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubcf4\uad00\uc77c \uc124\uc815 \ubc0f \uc0ad\uc81c \uc790\ub3d9\ud654&#8217;\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubd24\uc2b5\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uc218\ub3d9\uc73c\ub85c \uc11c\ubc84 \uc774\ubbf8\uc9c0\ub97c \uad00\ub9ac\ud558\ub294 \ubc88\uac70\ub85c\uc6c0\uc744 \uc904\uc774\uace0 \ud544\uc694 \uc774\uc0c1\uc73c\ub85c \ube44\uc6a9\uc774 \ubc1c\uc0dd\ud558\ub294 \uac83\uc744 \ub9c9\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Cloud Functions\uc640 \uac19\uc740 Serverless \uc11c\ube44\uc2a4\ub97c \ud65c\uc6a9\ud558\uba74 \uc774\ucc98\ub7fc \uc6b4\uc601 \ubd80\ub2f4\uc744 \uc904\uc774\uace0 \uc790\uc6d0\uc744 \ubcf4\ub2e4 \ud6a8\uc728\uc801\uc73c\ub85c \ud65c\uc6a9\ud558\ub294 \ub2e4\uc591\ud55c \ubc29\ubc95\uc744 \ubaa8\uc0c9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud3ec\uc2a4\ud305\uc774 \uc5ec\ub7ec\ubd84\uc758 \ud074\ub77c\uc6b0\ub4dc \uad00\ub9ac\uc5d0 \ub3c4\uc6c0\uc774 \ub418\uc5c8\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uae34 \uae00 \uc77d\uc5b4\uc8fc\uc154\uc11c \uac10\uc0ac\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"137\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/25143135\/ncloud-master-1.png\" alt=\"\" class=\"wp-image-1265\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/25143135\/ncloud-master-1.png 800w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/25143135\/ncloud-master-1-300x51.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/25143135\/ncloud-master-1-768x132.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\uc548\ub155\ud558\uc138\uc694. MANVSCLOUD \uae40\uc218\ud604\uc785\ub2c8\ub2e4. \uc774\uc804\uc5d0 \uacf5\uc720\ub4dc\ub838\ub358 &#8216;[NCLOUD] CLOUD FUNCTIONS\uc744 \ud65c\uc6a9\ud55c \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5 \uc790\ub3d9\ud654 \ubc0f SLACK \uc54c\ub78c&#8217;\uc5d0 \uc774\uc5b4\uc11c \uc624\ub298\uc740 \ubc31\uc5c5\ub41c \uc11c\ubc84 \uc774\ubbf8\uc9c0\uc758 \ubcf4\uad00\uc77c\uc744 \uc124\uc815\ud558\uace0 \uadf8 \ubcf4\uad00\uc77c\uc744 \ub118\uae34 \uc774\ubbf8\uc9c0\ub97c \uc790\ub3d9\uc73c\ub85c \uc0ad\uc81c\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\ub824\uace0 \ud569\ub2c8\ub2e4. \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5\uc740 \uc911\uc694\ud55c \ub370\uc774\ud130\ub97c \uc548\uc804\ud558\uac8c \ubcf4\uad00\ud558\ub294 \ub370 \ud070 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc11c\ubc84 \uc774\ubbf8\uc9c0\ub97c \uc9c0\uc18d\uc801\uc73c\ub85c \ubcf4\uad00\ud558\ub2e4 \ubcf4\uba74 \uacb0\uad6d \ube44\uc6a9\uc73c\ub85c \uc774\uc5b4\uc9c0\uba70 \uc774\ub97c \uc218\ub3d9\uc73c\ub85c \uad00\ub9ac\ud558\ub294 \uac83\uc740 \uc0c1\ub2f9\ud788 \ubc88\uac70\ub85c\uc6b8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc774\ubc88 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 Serverless \uc11c\ube44\uc2a4\uc778 Cloud Functions\ub97c \uc774\uc6a9\ud574 \ubcf4\uad00\uc77c\uc744 \uc124\uc815\ud558\uace0 \ubcf4\uad00\uc77c\uc774 \uc9c0\ub09c \uc11c\ubc84 \uc774\ubbf8\uc9c0\ub294 \uc790\ub3d9\uc73c\ub85c \uc0ad\uc81c\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\ub824\ub4dc\ub9ac\uace0\uc790 \ud569\ub2c8\ub2e4. Package &amp; Trigger Package\uc640 Trigger\ub294 &#8216;[NCLOUD] CLOUD FUNCTIONS\uc744 \ud65c\uc6a9\ud55c \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5 \uc790\ub3d9\ud654 \ubc0f SLACK \uc54c\ub78c&#8217; \ud3ec\uc2a4\ud305\uc5d0\uc11c \uc0dd\uc131\ud55c &#8220;manvscloud-server-image-backup&#8221;\uacfc &#8220;manvscloud-backup-cron-trg&#8221;\ub97c \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\ub824\uace0 \ud569\ub2c8\ub2e4. Package\uc5d0 \uc785\ub825\ub418\ub294 \ub514\ud3f4\ud2b8 \ud30c\ub77c\ubbf8\ud130\uc758 ACCESS KEY\uc640 SECRET KEY\ub294 \ubc18\ub4dc\uc2dc Sub Account\ub85c \ubc1c\uae09\ud558\uc5ec \ucd5c\uc18c\ud55c\uc758 \uad8c\ud55c\ub9cc \ubd80\uc5ec\ud574\uc57c\ud569\ub2c8\ub2e4. Action Cloud Functions &#8211; Action\uc5d0\uc11c [+ Action \uc0dd\uc131]\uc744 \ud074\ub9ad\ud569\ub2c8\ub2e4. \ud2b8\ub9ac\uac70 \uc885\ub958 : \uc704\uc5d0\uc11c \uc0dd\uc131\ud55c \ud2b8\ub9ac\uac70 \ucd94\uac00 (manvscloud-backup-cron-trg) \ud328\ud0a4\uc9c0 : \uc704\uc5d0\uc11c \uc0dd\uc131\ud55c \ud328\ud0a4\uc9c0 \ucd94\uac00 (manvscloud-server-image-backup) \ud0c0\uc785 : \uae30\ubcf8 \uc774\ub984, \uc124\uba85 : \uc790\uc720\ub86d\uac8c \uc785\ub825 \uc5b8\uc5b4(\uc18c\uc2a4\ucf54\ub4dc) : Python 3.7 \ud0c0\uc785(\uc18c\uc2a4\ucf54\ub4dc) : \ucf54\ub4dc \ucf54\ub4dc \uc124\uba85 : &#8216;[NCLOUD] CLOUD FUNCTIONS\uc744 \ud65c\uc6a9\ud55c \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubc31\uc5c5 \uc790\ub3d9\ud654 \ubc0f SLACK \uc54c\ub78c&#8217;\uc5d0\uc11c \uc124\uc815\ud55c\ub300\ub85c \ubc31\uc5c5\uc774 \ub420 \uacbd\uc6b0 backup-ServerId-date(backup-1111111-20230512)\uc640 \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \uc774\ubbf8\uc9c0\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \uc704 \ucf54\ub4dc \uc2e4\ud589 \uc2dc backup\uc73c\ub85c \uc2dc\uc791\ud558\ub294 \uc11c\ubc84 \uc774\ubbf8\uc9c0\ub97c \ub300\uc0c1\uc73c\ub85c \ub9c8\uc9c0\ub9c9\uc5d0 Date\uac00 \ubcf4\uad00\uc77c\uc744 \ub118\uc5b4\uac08 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"[NCLOUD] \ubc31\uc5c5\uc6a9 \uc11c\ubc84 \uc774\ubbf8\uc9c0 \ubcf4\uad00\uc77c \uc124\uc815 \ubc0f \uc0ad\uc81c \uc790\ub3d9\ud654","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[505,457,32,87,91,17,90,16,126,805,89,202,398,509,859,858,860,581,857,584],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2287"}],"collection":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2287"}],"version-history":[{"count":3,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2287\/revisions"}],"predecessor-version":[{"id":2294,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2287\/revisions\/2294"}],"wp:attachment":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}