{"id":2572,"date":"2023-12-29T19:32:02","date_gmt":"2023-12-29T10:32:02","guid":{"rendered":"https:\/\/manvscloud.com\/?p=2572"},"modified":"2023-12-29T19:32:15","modified_gmt":"2023-12-29T10:32:15","slug":"ncloud-%ec%95%94%ed%98%b8%ed%99%94%eb%90%9c-object-storage%eb%b2%84%ed%82%b7%ec%97%90-%eb%8c%80%ed%95%9c-%ec%88%98%eb%aa%85-%ec%a3%bc%ea%b8%b0-%ea%b4%80%eb%a6%ac-%ec%a0%84%eb%9e%b5","status":"publish","type":"post","link":"https:\/\/manvscloud.com\/?p=2572","title":{"rendered":"[NCLOUD] \uc554\ud638\ud654\ub41c Object Storage \ubc84\ud0b7\uc5d0 \ub300\ud55c \uc218\uba85 \uc8fc\uae30 \uad00\ub9ac \uc804\ub7b5"},"content":{"rendered":"\n<p>\uc548\ub155\ud558\uc138\uc694 MANVSCLOUD \uae40\uc218\ud604\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc758 Object Storage \uc11c\ube44\uc2a4\ub294 \ub370\uc774\ud130 \uc800\uc7a5\uacfc \uad00\ub9ac\uc5d0 \uc788\uc5b4\uc11c \ud0c1\uc6d4\ud55c \uc120\ud0dd\uc9c0\ub85c \uc790\ub9ac \uc7a1\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ub9ce\uc740 \uc0ac\uc6a9\uc790\ub4e4\uc774 \ud55c \uac00\uc9c0 \uc911\uc694\ud55c \ubb38\uc81c\uc5d0 \uc9c1\uba74\ud558\uace0 \uc788\ub294\ub370\uc694.<br>\ubc14\ub85c \ubc84\ud0b7 \uc554\ud638\ud654 \uc124\uc815\uc744 \ud588\uc744 \ub54c \uc218\uba85 \uc8fc\uae30 \uad00\ub9ac \uae30\ub2a5\uc758 \uc81c\ud55c\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ub294 \ub370\uc774\ud130 \ubcf4\uc548\uc744 \uac15\ud654\ud558\uace0\uc790 \ud558\ub294 \uc0ac\uc6a9\uc790\ub4e4\uc5d0\uac8c \ud070 \ub3c4\uc804\uacfc\uc81c\ub85c \ub2e4\uac00\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4.\uadf8\ub807\ub2e4\uba74 \uc774\ub7ec\ud55c \uc81c\ud55c\uc744 \uc5b4\ub5bb\uac8c \uadf9\ubcf5\ud560 \uc218 \uc788\uc744\uae4c\uc694?<\/p>\n\n\n\n<p>\ub2e4\ud589\ud788\ub3c4 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c\ub294 Object Storage API\ub97c \uc81c\uacf5\ud558\uace0 \uc788\uc5b4 Cloud Functions\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud55c\ub2e4\uba74 \uc774 \ubb38\uc81c\ub97c \uc27d\uac8c \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 \uc554\ud638\ud654\ub41c Object Storage \ubc84\ud0b7\uc5d0 \ub300\ud574 \uc218\uba85 \uc8fc\uae30 \uad00\ub9ac\ub97c \ud6a8\uacfc\uc801\uc73c\ub85c \uc218\ud589\ud558\ub294 \ubc29\ubc95\uc744 \uc548\ub0b4\ud574 \ub4dc\ub9ac\ub824\uace0 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ub97c \ud1b5\ud574 \ub370\uc774\ud130 \ubcf4\uc548\uc744 \uc720\uc9c0\ud558\uba74\uc11c\ub3c4 \ud6a8\uc728\uc801\uc73c\ub85c \ub370\uc774\ud130\ub97c \uad00\ub9ac\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-white-color has-vivid-green-cyan-background-color has-text-color has-background\"> Object Storage \uc554\ud638\ud654<\/h3>\n\n\n\n<p>Object Storage \ubc84\ud0b7\uc744 \uc554\ud638\ud654\ud558\ub294 \uac83\uc740 \ud604\ub300 \ud074\ub77c\uc6b0\ub4dc \ucef4\ud4e8\ud305 \ud658\uacbd\uc5d0\uc11c \ud544\uc694\ub85c \ud558\ub294 \ubcf4\uc548 \uc870\uce58 \uc911 \ud558\ub098\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub9ce\uc740 \ubcf4\uc548 \ud45c\uc900\uacfc \ud504\ub808\uc784\uc6cc\ud06c\ub294 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud560 \ub54c \uc554\ud638\ud654\ub97c \uae30\ubcf8 \uc694\uad6c\uc0ac\ud56d\uc73c\ub85c \uc0bc\uace0 \uc788\ub294\ub370\uc694. ISO 27001, NIST, PCI DSS \ub4f1\uacfc \uac19\uc740 \ud45c\uc900\ub4e4\uc740 \uc554\ud638\ud654\ub97c \ud1b5\ud574 \ub370\uc774\ud130 \ubcf4\ud638\ub97c \uac15\uc870\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ub7f0 \ubcf4\uc548 \uc2ec\uc0ac\ub294 \uae30\uc5c5\uc774\ub098 \uae30\uad00\uc774 \uc0ac\uc774\ubc84 \uacf5\uaca9, \ub370\uc774\ud130 \uc720\ucd9c, \ud574\ud0b9 \uc2dc\ub3c4 \ub4f1 \ub2e4\uc591\ud55c \uc704\ud611\uc73c\ub85c\ubd80\ud130 \uc790\uc2e0\uc758 \ub370\uc774\ud130\ub97c \uc5b4\ub5bb\uac8c \ubcf4\ud638\ud558\ub294\uc9c0\ub97c \ud3c9\uac00\ud558\uba70 \ub370\uc774\ud130 \uc554\ud638\ud654\ub294 \uc911\uc694\ud55c \ubc29\uc5b4 \uc218\ub2e8\uc73c\ub85c \uac04\uc8fc\ud558\uace0 \uc788\ub294\ub370 \uc774\uc640 \uac19\uc774 Object Storage \ubc84\ud0b7\uc744 \uc554\ud638\ud654\ud558\ub294 \uac83\uc740 \ub370\uc774\ud130 \ubcf4\uc548\uc744 \uac15\ud654\ud558\uace0 \ub2e4\uc591\ud55c \uaddc\uc815\uacfc \ubcf4\uc548 \ud45c\uc900\uc744 \ucda9\uc871\uc2dc\ud0a4\uba70 \uae30\uc5c5\uacfc \uae30\uad00\uc774 \ubcf4\uc548 \uc2ec\uc0ac\uc5d0\uc11c \uae0d\uc815\uc801\uc778 \ud3c9\uac00\ub97c \ubc1b\uc744 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"214\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29190608\/image-14.png\" alt=\"\" class=\"wp-image-2588\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29190608\/image-14.png 853w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29190608\/image-14-300x75.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29190608\/image-14-768x193.png 768w\" sizes=\"(max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>\ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc758 Object Storage\ub3c4 \uc554\ud638\ud654 \uad00\ub9ac \uc124\uc815\uc744 \ud1b5\ud574 \ubc84\ud0b7 \ub0b4 \uac1d\uccb4\ub97c \uc790\ub3d9\uc73c\ub85c \uc554\ud638\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774\uc640 \uac19\uc774 \uc554\ud638\ud654 \uc124\uc815\uc744 \ud560 \uacbd\uc6b0 Object Storage \uae30\ub2a5 \uc911 \ud558\ub098\uc778 &#8216;Lifecycle Management&#8217;\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub294 \uc810\uc778\ub370\uc694.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"214\" height=\"38\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29190455\/image-12.png\" alt=\"\" class=\"wp-image-2586\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"284\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29190516\/image-13.png\" alt=\"\" class=\"wp-image-2587\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29190516\/image-13.png 662w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29190516\/image-13-300x129.png 300w\" sizes=\"(max-width: 662px) 100vw, 662px\" \/><\/figure>\n\n\n\n<p>\uc704 \uadf8\ub9bc\uacfc \uac19\uc774 \uc554\ud638\ud654\ub41c mvsc-sec-test \ubc84\ud0b7\uc5d0 \ub300\ud574\uc11c\ub294 \uc218\uba85 \uc8fc\uae30 \uad00\ub9ac \ub300\uc0c1 \ubc84\ud0b7\uc73c\ub85c \uc120\ud0dd\ud560 \uc218 \uc5c6\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub807\ub2e4\uba74 \uc554\ud638\ud654\ub41c \ubc84\ud0b7 \ub0b4 \uac1d\uccb4\ub4e4\uc740 \uc5b4\ub5bb\uac8c \uc218\uba85 \uc8fc\uae30\ub97c \uc124\uc815\ud560 \uc218 \uc788\uc744\uc9c0 Hands On\uc744 \ud1b5\ud574 \uc54c\uc544\ubcf4\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-white-color has-vivid-cyan-blue-background-color has-text-color has-background\"> Hands On<\/h3>\n\n\n\n<p><em># VPC, Server \uc0dd\uc131\uc5d0 \ub300\ud55c \uac00\uc774\ub4dc\ub294 \uc0dd\ub7b5\ud569\ub2c8\ub2e4.<br># Python\uc740 3.11 \ubc84\uc804\uc774 \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/em><\/p>\n\n\n\n<ul>\n<li><strong>\uc8fc\uc758\uc0ac\ud56d (1)<\/strong> : Cloud Functions\uc5d0\uc11c\ub294 Boto3 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub0b4\uc7a5\ud558\uace0 \uc788\uc9c0 \uc54a\uae30\ub54c\ubb38\uc5d0 boto3 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud3ec\ud568\uc2dc\ucf1c \uc555\ucd95\ud55c \ud6c4 .zip \ud30c\uc77c\ub85c \uc5c5\ub85c\ub4dc\ud560 \uac83\uc785\ub2c8\ub2e4.<\/li>\n<\/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=\"\">\"2023-12-26T03:52:10.60211601Z  stderr: Traceback (most recent call last):\"\n\"2023-12-26T03:52:10.602137684Z stderr: File \"exec__.py\", line 42, in &lt;module>\"\n\"2023-12-26T03:52:10.602141788Z stderr: from main__ import main as main\"\n\"2023-12-26T03:52:10.602144077Z stderr: File \"\/action\/1\/bin\/main__.py\", line 3, in &lt;module>\"\n\"2023-12-26T03:52:10.602147112Z stderr: import boto3\"\n\"2023-12-26T03:52:10.602149144Z stderr: ModuleNotFoundError: No module named 'boto3'\"\n\"2023-12-26T03:52:10.607916982Z stderr: Command exited abruptly during initialization.\"<\/pre>\n\n\n\n<ul>\n<li><strong>\uc8fc\uc758\uc0ac\ud56d (2)<\/strong> : Boto3\ub294 2023\ub144 12\uc6d4 13\uc77c\ubd80\ud130 Python 3.7\uc744 \ub354 \uc774\uc0c1 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uae30\ub54c\ubb38\uc5d0 3.8 \uc774\uc0c1 \ubc84\uc804\uc73c\ub85c \uc0ac\uc6a9\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/li>\n<\/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=\"\">\"2023-12-26T04:24:05.996379353Z stderr: \/action\/1\/bin\/boto3\/compat.py:82: PythonDeprecationWarning: Boto3 will no longer support Python 3.7 starting December 13, 2023. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.8 or later. More information can be found here: https:\/\/aws.amazon.com\/blogs\/developer\/python-support-policy-updates-for-aws-sdks-and-tools\/\"\n\"2023-12-26T04:24:05.996387502Z stderr: warnings.warn(warning, PythonDeprecationWarning)\"<\/pre>\n\n\n\n<p>\uc544\ub798 \uc608\uc2dc\ub294 Linux \ud658\uacbd\uc744 \uae30\uc900\uc73c\ub85c \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul>\n<li><strong>\ucf54\ub4dc \uc791\uc131 \ubc0f .zip \ud30c\uc77c \uc0dd\uc131<\/strong><\/li>\n<\/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=\"\">mkdir obj_lifecycle\ncd obj_lifecycle\npython -m venv venv\nsource venv\/bin\/activate\npip install boto3\npip install requests\ncp -r venv\/lib\/python3.11\/site-packages\/* .\nvi main__.py<\/pre>\n\n\n\n<p>venv\ub97c \uc774\uc6a9\ud558\uc5ec \uac00\uc0c1 \ud658\uacbd\uc744 \ub9cc\ub4e4\uc5b4\uc900 \ub4a4 boto3\ub97c install\ud558\uace0 main__.py\ub97c \uc791\uc131\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\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 json\nimport base64\nimport boto3\nimport requests\nfrom datetime import datetime, timedelta\n\nservice_name = \"s3\"\nendpoint_url = \"https:\/\/kr.object.ncloudstorage.com\"\nregion_name = \"kr-standard\"\n\nS3 = None\n\ndef set_response(status_code, body):\n    return {\n        \"Content-Type\": \"application\/json\",\n        \"statusCode\": status_code,\n        \"body\": json.dumps(body),\n    }\n\ndef set_S3_client(access_key, secret_key):\n    print(\"--- new object storage client ---\")\n    return boto3.client(\n        service_name,\n        endpoint_url=endpoint_url,\n        aws_access_key_id=access_key,\n        aws_secret_access_key=secret_key,\n    )\n\ndef delete_old_files(bucket_name, prefix, days_old):\n    try:\n        global S3\n        response = S3.list_objects_v2(Bucket=bucket_name, Prefix=prefix)\n        if 'Contents' not in response:\n            return []\n\n        deleted_files = []\n        for item in response['Contents']:\n            last_modified = item['LastModified']\n            if datetime.now(last_modified.tzinfo) - last_modified > timedelta(days=days_old):\n                S3.delete_object(Bucket=bucket_name, Key=item['Key'])\n                deleted_files.append(item['Key'])\n        return deleted_files\n\n    except Exception as e:\n        print(\"Error in deleting old files.\")\n        raise e\n\ndef main(args):\n    try:\n        global S3\n        if S3 is None:\n            S3 = set_S3_client(args[\"access_key\"], args[\"secret_key\"])\n\n        method = args[\"__ow_method\"]\n        path = args[\"__ow_path\"]\n        path_components = path.split(\"\/\")\n\n        # \ucc98\ub9ac\ud560 \uacbd\ub85c\uc640 \ubc84\ud0b7 \uc774\ub984 \uc9c0\uc815\n        bucket_name = args[\"bucket_name\"]\n        target_prefix = args[\"bucket_path\"]\n\n        # \ud30c\uc77c \uc0ad\uc81c \uae30\ub2a5 \uc2e4\ud589\n        if method == \"delete\" and len(path_components) == 2 and path_components[1] == \"cleanup\":\n            days_old = int(args.get('expiration_date', 180))  # \uae30\ubcf8\uac12 180\uc77c\n            deleted_files = delete_old_files(bucket_name, target_prefix, days_old)\n            return set_response(200, {\"deleted_files\": deleted_files})\n\n        # \uae30\ud0c0 \ub2e4\ub978 HTTP \uba54\uc18c\ub4dc \ucc98\ub9ac \ubd80\ubd84\uc744 \uc5ec\uae30\uc5d0 \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n    except Exception as e:\n        print(e)\n        return set_response(500, {\"error\": \"An unexpected error occurred.\"})\n<\/pre>\n\n\n\n<p>\uc791\uc131\ub41c main__.py\uc758 \ucf54\ub4dc\ub294 \uc704\uc640 \uac19\uace0 \uc774\ud6c4 \uc555\ucd95\ub418\uc5b4\uc57c\ud560 \ud30c\uc77c\ub4e4\uc740 \uc544\ub798 \ubaa9\ub85d\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.<br>(venv \ub514\ub809\ud1a0\ub9ac\ub294 \uc0ad\uc81c\ud574\ubc84\ub9bd\uc2dc\ub2e4 \uc6a9\ub7c9\ub9cc \ucc28\uc9c0\ud558\ub2c8\uae4c\uc694?)<\/p>\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=\"\">total 76\ndrwxr-xr-x 10 root root  4096 Dec 26 13:34 boto3\ndrwxr-xr-x  2 root root   133 Dec 26 13:34 boto3-1.34.7.dist-info\ndrwxr-xr-x  8 root root  4096 Dec 26 13:34 botocore\ndrwxr-xr-x  2 root root   120 Dec 26 13:34 botocore-1.34.7.dist-info\ndrwxr-xr-x  3 root root   112 Dec 26 13:34 certifi\ndrwxr-xr-x  2 root root   102 Dec 26 13:34 certifi-2023.11.17.dist-info\ndrwxr-xr-x  4 root root  4096 Dec 26 13:34 charset_normalizer\ndrwxr-xr-x  2 root root   126 Dec 26 13:34 charset_normalizer-3.3.2.dist-info\ndrwxr-xr-x  6 root root  4096 Dec 26 13:34 dateutil\ndrwxr-xr-x  3 root root    63 Dec 26 13:34 _distutils_hack\n-rw-r--r--  1 root root   151 Dec 26 13:34 distutils-precedence.pth\ndrwxr-xr-x  3 root root   190 Dec 26 13:34 idna\ndrwxr-xr-x  2 root root    84 Dec 26 13:34 idna-3.6.dist-info\ndrwxr-xr-x  3 root root   167 Dec 26 13:34 jmespath\ndrwxr-xr-x  2 root root   106 Dec 26 13:34 jmespath-1.0.1.dist-info\n-rw-r--r--  1 root root  2447 Dec 26 13:35 main__.py\ndrwxr-xr-x  5 root root   136 Dec 26 13:34 pip\ndrwxr-xr-x  2 root root   166 Dec 26 13:34 pip-23.2.1.dist-info\ndrwxr-xr-x  5 root root    73 Dec 26 13:34 pkg_resources\ndrwxr-xr-x  2 root root    33 Dec 26 13:34 __pycache__\ndrwxr-xr-x  2 root root   118 Dec 26 13:34 python_dateutil-2.8.2.dist-info\ndrwxr-xr-x  3 root root  4096 Dec 26 13:34 requests\ndrwxr-xr-x  2 root root   119 Dec 26 13:34 requests-2.31.0.dist-info\ndrwxr-xr-x  3 root root  4096 Dec 26 13:34 s3transfer\ndrwxr-xr-x  2 root root   124 Dec 26 13:34 s3transfer-0.10.0.dist-info\ndrwxr-xr-x  8 root root  4096 Dec 26 13:34 setuptools\ndrwxr-xr-x  2 root root   143 Dec 26 13:34 setuptools-65.5.0.dist-info\ndrwxr-xr-x  2 root root   102 Dec 26 13:34 six-1.16.0.dist-info\n-rw-r--r--  1 root root 34549 Dec 26 13:34 six.py\ndrwxr-xr-x  5 root root  4096 Dec 26 13:34 urllib3\ndrwxr-xr-x  3 root root    82 Dec 26 13:34 urllib3-2.0.7.dist-info<\/pre>\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=\"\">zip -r obj_lifecycle.zip *<\/pre>\n\n\n\n<p>Cloud Functions\uc73c\ub85c \uc5c5\ub85c\ub4dc\ud560 \uc218 \uc788\ub3c4\ub85d .zip \ud30c\uc77c\ub85c \uc555\ucd95\uc774 \ub418\uc5c8\ub2e4\uba74 Cloud Functions Action\uc5d0\uc11c \ud30c\uc77c\uc744 \uc5c5\ub85c\ub4dc \ud574\uc90d\uc2dc\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"190\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191113\/image-15-1024x190.png\" alt=\"\" class=\"wp-image-2589\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191113\/image-15-1024x190.png 1024w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191113\/image-15-300x56.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191113\/image-15-768x143.png 768w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191113\/image-15-1536x286.png 1536w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191113\/image-15-1080x201.png 1080w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191113\/image-15.png 1560w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul>\n<li><strong>Cloud Functions<\/strong><br>\ub514\ud3f4\ud2b8 \ud30c\ub77c\ubbf8\ud130\ub294 \uc544\ub798\uc640 \uac19\uc774 \uc124\uc815\ud574\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br><br>VPC ID\ub294 Access Control Group(ACG)\uac00 \uc874\uc7ac\ud558\ub294 VPC\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc73c\uba70 OBJ_ACCESS_KEY\uc640 OBJ_SECRET_KEY\ub294 Object Storage\uc758 \uad8c\ud55c\uc774 \uc788\ub294 \ucd5c\uc18c\ud55c\uc758 \uad8c\ud55c\uc774 \ubd80\uc5ec\ub41c API\uc6a9 Sub Account\uc758 Access Key\uc640 Secret key \ub4f1\uc744 \uc785\ub825\ud574\uc90d\ub2c8\ub2e4.<\/li>\n<\/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=\"\">{\"expiration_date\":\"180\",\"bucket_path\":\"cat-tracer\/\",\"__ow_method\":\"delete\",\"access_key\":\"AAAAAAAAAAAAAAAAA\",\"secret_key\":\"BBBBBBBBBBBBBBBBBBBBBBBBBBBB\",\"__ow_path\":\"\/cleanup\",\"bucket_name\":\"mvsc-sec-test\"}<\/pre>\n\n\n\n<ul>\n<li><strong>expiration_date<\/strong>\u00a0: \ub9cc\ub8cc\uc77c<\/li>\n\n\n\n<li><strong>bucket_path<\/strong>\u00a0: \ubc84\ud0b7 \ub0b4 \uc218\uba85 \uc8fc\uae30 \uacbd\ub85c<\/li>\n\n\n\n<li><strong>__ow_method<\/strong>\u00a0: \uc694\uccad \uba54\uc18c\ub4dc<\/li>\n\n\n\n<li><strong>access_key\u00a0<\/strong>: Object Storage \uac1d\uccb4 \uc0ad\uc81c\uac00 \uac00\ub2a5\ud55c \uad8c\ud55c\uc774 \uc788\ub294 ACCESS KEY<\/li>\n\n\n\n<li><strong>secret_key<\/strong>\u00a0: Object Storage \uac1d\uccb4 \uc0ad\uc81c\uac00 \uac00\ub2a5\ud55c \uad8c\ud55c\uc774 \uc788\ub294 SECRET KEY<\/li>\n\n\n\n<li><strong>__ow_path<\/strong>\u00a0: Cloud Functions \ud658\uacbd\uc5d0\uc11c HTTP \uc694\uccad\uc758 \uacbd\ub85c(URL\uc758 \uc77c\ubd80)\ub97c \ub098\ud0c0\ub0b4\ub294 \ubcc0\uc218<\/li>\n\n\n\n<li><strong>bucket_name<\/strong>\u00a0: \uc554\ud638\ud654 \uc124\uc815\ub41c Object Storage\uc758 \ubc84\ud0b7 \uc774\ub984<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"832\" height=\"185\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191754\/image-16.png\" alt=\"\" class=\"wp-image-2590\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191754\/image-16.png 832w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191754\/image-16-300x67.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29191754\/image-16-768x171.png 768w\" sizes=\"(max-width: 832px) 100vw, 832px\" \/><\/figure>\n\n\n\n<p>KMS \ud0a4\ub97c \uc0dd\uc131\ud558\uace0 Cloud Functions \ub0b4 \uc554\ud638\ud654 \uc124\uc815\uc744 \uc774\uc6a9\ud558\uc5ec \uc124\uc815\ud55c \ud30c\ub77c\ubbf8\ud130\uc758 \uac12\uc744 \uc554\ud638\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc989, \ub514\ud3f4\ud2b8 \ud30c\ub77c\ubbf8\ud130\uc5d0 \uc785\ub825\ub41c ACCESS KEY, SECRET KEY \ub4f1\uc744 \uc554\ud638\ud654\ud560 \uc218 \uc788\uac8c\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc704 Action\uc744 Cron\uacfc \uac19\uc740 \ud2b8\ub9ac\uac70\ub97c \ud568\uaed8 \uc0ac\uc6a9\ud55c\ub2e4\uba74 \ud558\ub8e8\uc5d0 \ud55c\ubc88\uc529 \ud2b9\uc815 \uae30\uac04\uc774 \ub118\uc5b4\uac00\ub294 \ud30c\uc77c\uc744 \uc0ad\uc81c\ud558\uc5ec \uc554\ud638\ud654\ub41c Object Storage\uc758 \ube44\uc6a9\uc744 \ucd5c\uc801\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"660\" height=\"173\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29192127\/image-17.png\" alt=\"\" class=\"wp-image-2591\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29192127\/image-17.png 660w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/12\/29192127\/image-17-300x79.png 300w\" sizes=\"(max-width: 660px) 100vw, 660px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-white-color has-cyan-bluish-gray-background-color has-text-color has-background\"> Personal Comments<\/h3>\n\n\n\n<p>\ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c Object Storage\uc758 \uac00\uaca9\uc774 Block Storage\ubcf4\ub2e4 \uc800\ub834\ud558\uc9c0\ub9cc \uc9c0\uc18d\uc801\uc73c\ub85c \uad00\ub9ac\ub418\uc9c0 \uc54a\uace0 \ud30c\uc77c\uc774 \uc313\uc774\uac8c \ub41c\ub2e4\uba74 \ube44\uc6a9\uc740 \uc5b4\ub290\uc21c\uac04 \uae30\ud558\uae09\uc218\uc801\uc73c\ub85c \ub298\uc5b4\ub098\uc788\uc744 \uac83\uc785\ub2c8\ub2e4. \uc774\ub54c \uc554\ud638\ud654\ub41c Object Storage\ub97c Lifecycle Management\ub85c \uad00\ub9ac\ud560 \uc218 \uc5c6\ub2e4\uba74 \uc774\ub97c \ub300\uc548\uc73c\ub85c \uc694\uccad\uc774 1,000,000 (\uac74) \uc774\ud558\uc77c \uacbd\uc6b0, \uc18c\uc694\uc2dc\uac04\uc774 400,000 (GB-\ucd08) \uc774\ud558\uc778 \uacbd\uc6b0 \ubb34\ub8cc\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uace0 \uadf8 \uc774\uc0c1 \uc0ac\uc6a9\ud558\ub354\ub77c\ub3c4 \uc0ac\uc6a9\ud55c\ub9cc\ud07c\ub9cc \ube44\uc6a9\uc774 \ubc1c\uc0dd\ud558\ub294 Serverless \uc11c\ube44\uc2a4\uc778Cloud Functions\uc744 \ud65c\uc6a9\ud558\uc5ec Object Storage \ubc84\ud0b7 \ub0b4 \ud30c\uc77c\ub4e4\uc744 \uc27d\uac8c \uad00\ub9ac\ud558\uace0 \ube44\uc6a9\uc744 \ucd5c\uc801\ud654\ud560 \uc218 \uc788\uc2b5\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=\"773\" height=\"133\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/12204137\/Ncloud_Master_logo.png\" alt=\"\" class=\"wp-image-1229\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/12204137\/Ncloud_Master_logo.png 773w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/12204137\/Ncloud_Master_logo-300x52.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/12204137\/Ncloud_Master_logo-768x132.png 768w\" sizes=\"(max-width: 773px) 100vw, 773px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\uc548\ub155\ud558\uc138\uc694 MANVSCLOUD \uae40\uc218\ud604\uc785\ub2c8\ub2e4. \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc758 Object Storage \uc11c\ube44\uc2a4\ub294 \ub370\uc774\ud130 \uc800\uc7a5\uacfc \uad00\ub9ac\uc5d0 \uc788\uc5b4\uc11c \ud0c1\uc6d4\ud55c \uc120\ud0dd\uc9c0\ub85c \uc790\ub9ac \uc7a1\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ub9ce\uc740 \uc0ac\uc6a9\uc790\ub4e4\uc774 \ud55c \uac00\uc9c0 \uc911\uc694\ud55c \ubb38\uc81c\uc5d0 \uc9c1\uba74\ud558\uace0 \uc788\ub294\ub370\uc694.\ubc14\ub85c \ubc84\ud0b7 \uc554\ud638\ud654 \uc124\uc815\uc744 \ud588\uc744 \ub54c \uc218\uba85 \uc8fc\uae30 \uad00\ub9ac \uae30\ub2a5\uc758 \uc81c\ud55c\uc785\ub2c8\ub2e4. \uc774\ub294 \ub370\uc774\ud130 \ubcf4\uc548\uc744 \uac15\ud654\ud558\uace0\uc790 \ud558\ub294 \uc0ac\uc6a9\uc790\ub4e4\uc5d0\uac8c \ud070 \ub3c4\uc804\uacfc\uc81c\ub85c \ub2e4\uac00\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4.\uadf8\ub807\ub2e4\uba74 \uc774\ub7ec\ud55c \uc81c\ud55c\uc744 \uc5b4\ub5bb\uac8c \uadf9\ubcf5\ud560 \uc218 \uc788\uc744\uae4c\uc694? \ub2e4\ud589\ud788\ub3c4 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c\ub294 Object Storage API\ub97c \uc81c\uacf5\ud558\uace0 \uc788\uc5b4 Cloud Functions\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud55c\ub2e4\uba74 \uc774 \ubb38\uc81c\ub97c \uc27d\uac8c \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 \uc554\ud638\ud654\ub41c Object Storage \ubc84\ud0b7\uc5d0 \ub300\ud574 \uc218\uba85 \uc8fc\uae30 \uad00\ub9ac\ub97c \ud6a8\uacfc\uc801\uc73c\ub85c \uc218\ud589\ud558\ub294 \ubc29\ubc95\uc744 \uc548\ub0b4\ud574 \ub4dc\ub9ac\ub824\uace0 \ud569\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \ub370\uc774\ud130 \ubcf4\uc548\uc744 \uc720\uc9c0\ud558\uba74\uc11c\ub3c4 \ud6a8\uc728\uc801\uc73c\ub85c \ub370\uc774\ud130\ub97c \uad00\ub9ac\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. Object Storage \uc554\ud638\ud654 Object Storage \ubc84\ud0b7\uc744 \uc554\ud638\ud654\ud558\ub294 \uac83\uc740 \ud604\ub300 \ud074\ub77c\uc6b0\ub4dc \ucef4\ud4e8\ud305 \ud658\uacbd\uc5d0\uc11c \ud544\uc694\ub85c \ud558\ub294 \ubcf4\uc548 \uc870\uce58 \uc911 \ud558\ub098\uc785\ub2c8\ub2e4. \ub9ce\uc740 \ubcf4\uc548 \ud45c\uc900\uacfc \ud504\ub808\uc784\uc6cc\ud06c\ub294 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud560 \ub54c \uc554\ud638\ud654\ub97c \uae30\ubcf8 \uc694\uad6c\uc0ac\ud56d\uc73c\ub85c \uc0bc\uace0 \uc788\ub294\ub370\uc694. ISO 27001, NIST, PCI DSS \ub4f1\uacfc \uac19\uc740 \ud45c\uc900\ub4e4\uc740 \uc554\ud638\ud654\ub97c \ud1b5\ud574 \ub370\uc774\ud130 \ubcf4\ud638\ub97c \uac15\uc870\ud569\ub2c8\ub2e4. \uc774\ub7f0 \ubcf4\uc548 \uc2ec\uc0ac\ub294 \uae30\uc5c5\uc774\ub098 \uae30\uad00\uc774 \uc0ac\uc774\ubc84 \uacf5\uaca9, \ub370\uc774\ud130 \uc720\ucd9c, \ud574\ud0b9 \uc2dc\ub3c4 \ub4f1 \ub2e4\uc591\ud55c \uc704\ud611\uc73c\ub85c\ubd80\ud130 \uc790\uc2e0\uc758 \ub370\uc774\ud130\ub97c \uc5b4\ub5bb\uac8c \ubcf4\ud638\ud558\ub294\uc9c0\ub97c \ud3c9\uac00\ud558\uba70 \ub370\uc774\ud130 \uc554\ud638\ud654\ub294 \uc911\uc694\ud55c \ubc29\uc5b4 \uc218\ub2e8\uc73c\ub85c \uac04\uc8fc\ud558\uace0 \uc788\ub294\ub370 \uc774\uc640 \uac19\uc774 Object Storage \ubc84\ud0b7\uc744 \uc554\ud638\ud654\ud558\ub294 \uac83\uc740 \ub370\uc774\ud130 \ubcf4\uc548\uc744 \uac15\ud654\ud558\uace0 \ub2e4\uc591\ud55c \uaddc\uc815\uacfc \ubcf4\uc548 \ud45c\uc900\uc744 \ucda9\uc871\uc2dc\ud0a4\uba70 \uae30\uc5c5\uacfc \uae30\uad00\uc774 \ubcf4\uc548 \uc2ec\uc0ac\uc5d0\uc11c \uae0d\uc815\uc801\uc778 \ud3c9\uac00\ub97c \ubc1b\uc744 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4. \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc758 Object Storage\ub3c4 \uc554\ud638\ud654 \uad00\ub9ac \uc124\uc815\uc744 [&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":"\ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c Object Storage\uc758 \uac00\uaca9\uc774 Block Storage\ubcf4\ub2e4 \uc800\ub834\ud558\uc9c0\ub9cc \uc9c0\uc18d\uc801\uc73c\ub85c \uad00\ub9ac\ub418\uc9c0 \uc54a\uace0 \ud30c\uc77c\uc774 \uc313\uc774\uac8c \ub41c\ub2e4\uba74 \ube44\uc6a9\uc740 \uc5b4\ub290\uc21c\uac04 \uae30\ud558\uae09\uc218\uc801\uc73c\ub85c \ub298\uc5b4\ub098\uc788\uc744 \uac83\uc785\ub2c8\ub2e4. \uc774\ub54c \uc554\ud638\ud654\ub41c Object Storage\ub97c Lifecycle Management\ub85c \uad00\ub9ac\ud560 \uc218 \uc5c6\ub2e4\uba74 \uc774\ub97c \ub300\uc548\uc73c\ub85c \uc694\uccad\uc774 1,000,000 (\uac74) \uc774\ud558\uc77c \uacbd\uc6b0, \uc18c\uc694\uc2dc\uac04\uc774 400,000 (GB-\ucd08) \uc774\ud558\uc778 \uacbd\uc6b0 \ubb34\ub8cc\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uace0 \uadf8 \uc774\uc0c1 \uc0ac\uc6a9\ud558\ub354\ub77c\ub3c4 \uc0ac\uc6a9\ud55c\ub9cc\ud07c\ub9cc \ube44\uc6a9\uc774 \ubc1c\uc0dd\ud558\ub294 Serverless \uc11c\ube44\uc2a4\uc778Cloud Functions\uc744 \ud65c\uc6a9\ud558\uc5ec Object Storage \ubc84\ud0b7 \ub0b4 \ud30c\uc77c\ub4e4\uc744 \uc27d\uac8c \uad00\ub9ac\ud558\uace0 \ube44\uc6a9\uc744 \ucd5c\uc801\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","jetpack_seo_html_title":"[NCLOUD] \uc554\ud638\ud654\ub41c Object Storage\ubc84\ud0b7\uc5d0 \ub300\ud55c \uc218\uba85 \uc8fc\uae30 \uad00\ub9ac \uc804\ub7b5","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[249,355,457,863,856,32,87,91,17,90,16,354,805,89,202,398,931,932,609,426,818],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2572"}],"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=2572"}],"version-history":[{"count":5,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2572\/revisions"}],"predecessor-version":[{"id":2593,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2572\/revisions\/2593"}],"wp:attachment":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}